Ios 如何将系统日期转换为yyyy MM dd日期格式的日期
我想将我的系统日期转换为yyyy-MM-dd日期格式,并分配给另一个日期 我的代码是:Ios 如何将系统日期转换为yyyy MM dd日期格式的日期,ios,objective-c,nsdate,Ios,Objective C,Nsdate,我想将我的系统日期转换为yyyy-MM-dd日期格式,并分配给另一个日期 我的代码是: NSDate *datenow = [NSDate date]; NSDateFormatter *df = [[NSDateFormatter alloc]init]; [df setDateFormat:@"yyyy-MM-dd"]; currDate = [df stringFromDate:datenow]; NSLog(@"currDate ====%@",currDate); [df set
NSDate *datenow = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd"];
currDate = [df stringFromDate:datenow];
NSLog(@"currDate ====%@",currDate);
[df setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *compareDate = [df dateFromString:currDate];
NSLog(@"compareDate ====%@",compareDate);
NSLog像这样打印
当前日期===2014-05-10
比较日期===2014-05-10 00:00:00+0000
我想删除比较日期中的00:00:00+0000。怎么做。
请帮帮我,它在浪费我的时间。你可以用
NSCalendar*currentCalendar=[NSCalendar currentCalendar]代码>
//获取当前日期的组件。
NSDateComponents*currentDateComponents=[当前日历组件:NSCalendarCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSMinuteCalendarUnit | NSSecondary CalendarUnit | NSTimeZoneCalendarUnit fromDate:[NSDate日期]]代码>
现在,您可以使用日期的组成部分(当然,您可以传递任何日期,而不是[NSDate date]
),您可以使用所需的每一个组件,也可以进一步使用:
NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
[日期格式化程序setDateFormat:@“YYYY-MM-DD”]代码>
设置日期格式。您说过:
我希望在比较日期中删除00:00:00+0000
。我该怎么做呢
简而言之,如果您不想在UTC字符串yyyy-MM-dd HH:MM:ss+0000
中看到日期,则不要NSLog
对象本身。仅NSLog
从NSDateFormatter
提取的字符串
但是,您的示例代码表明对NSDate
和NSDateFormatter
对象的用途和功能存在误解
- A
NSDate
表示一个时间点,例如格林尼治标准时间晚上8点,即巴黎东部标准时间晚上10点或纽约东部标准时间下午4点。但是NSDate
不包括时区,因为格林尼治标准时间晚上8点、东部标准时间晚上10点和东部标准时间下午4点都代表相同的时间点
NSDateFormatter
可用于转换该NSDate
对象的字符串表示形式(例如,在格林威治标准时间晚上8点,巴黎的用户看到“晚上10点”,而纽约的用户看到“下午4点”)
但是,使用日期格式化程序将日期转换为字符串(默认情况下,该字符串将位于本地时区),然后将该字符串转换回日期(这一次表示该字符串以UTC表示日期/时间,而实际上并非如此)是没有意义的
这相当于我在美国东部时间下午4点站在纽约时代广场的一个法国人旁边,告诉他“现在是格林威治标准时间下午4点”,他只会把我当成一个疯狂的美国人,因为我太无知了,不知道现在真的是格林威治标准时间晚上8点(或者,根据他的手表,巴黎的塞斯特标准时间晚上10点)
所以,也许你可以退一步告诉我们你想做什么,因为你问题中的代码没有意义。如果使用日期格式化程序使用特定时区将日期转换为字符串,则如果要将其转换回日期,则必须使用相同的时区。(或者您必须使用一种明确的时区日期格式;这就是为什么NSLog
使用yyyy-MM-dd HH:MM:ss+0000
格式,这样就可以清楚地知道NSDate
代表的时间点)。我想删除比较日期中的00:00:00+0000。“-这没有任何意义NSDate
只是一个绝对时间点(自2001年1月1日格林威治标准时间起存储为秒)。NSDate对小时、分钟或时区一无所知。在“compareDate====2014-05-10 00:00:00+0000”中看到的是日期对象的描述。说明始终以GTM打印。。。。我指的是GMT。-也许你可以描述你实际需要实现的目标。每当你NSLog
NSDate
对象时,它都会以yyyy-MM-dd HH:MM:ss+0000
格式在GMT中显示它。无论何时,只要您想以特定格式查看它(例如仅yyyy-MM-dd
,那么您就不应该NSLog
查看NSDate
对象,而应该只查看使用NSDateFormatter
检索到的字符串表示形式)。
NSDateFormatter *formater = [[NSDateFormatter alloc] init];
[formater setLocale:[NSLocale systemLocale]];
[formater setDateFormat:@"yyyy-MM-dd"];
NSString *todayString = [formater stringFromDate:[NSDate date]];
NSLog(@"todayString ====%@", todayString);