如何使用yyyy-MM-dd日期格式将系统日期转换为日期

时间:2014-05-10 06:41:21

标签: 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 setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[df setDateFormat:@"yyyy-MM-dd"];

NSDate *compareDate = [df dateFromString:currDate];

NSLog(@"compareDate ====%@",compareDate);

NSLog就像这样打印 currDate ==== 2014-05-10 compareDate ==== 2014-05-10 00:00:00 +0000

我想在比较日期删除00:00:00 +0000。怎么做。 请帮助我,这是我的时间。

3 个答案:

答案 0 :(得分:0)

您可以使用

NSCalendar *currentCalendar = [NSCalendar currentCalendar];

// Getting components of the current date. NSDateComponents *currentDateComponents = [currentCalendar components:NSCalendarCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSTimeZoneCalendarUnit fromDate:[NSDate date]];

现在你是日期的组成部分(你当然可以传递任何日期而不是[NSDate date])你可以使用你想要的每一个,或者你可以进一步使用:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"YYYY-MM-DD"];

格式化您的日期。

答案 1 :(得分:0)

你说:

  

我想在比较日期删除00:00:00 +0000。怎么做我。

简而言之,如果您不想在UTC字符串yyyy-MM-dd HH:mm:ss +0000中查看日期,请不要NSLog NSDate对象本身。只有NSLogNSDateFormatter中提取的字符串。


但是,您的示例代码暗示了对NSDateNSDateFormatter对象的目的和功能的误解。

  • NSDate表示某个时间点,例如格林威治标准时间晚上8点,即巴黎CEST晚上10点或纽约时间下午4点。但是NSDate并不包括时区,格林尼治标准时间晚上8点和美国东部时间晚上10点以及美国东部时间下午4点都代表相同的时间点。

  • NSDateFormatter可用于转换为NSDate个对象的字符串表示形式(例如,以便在格林威治标准时间晚上8点,巴黎的用户看到"晚上10点&#34 ;而纽约的用户看到"下午4点")。

但是使用日期格式化程序将日期转换为字符串是没有意义的(默认情况下,此字符串将在本地时区中),然后将该字符串转换回日期(这次说该字符串表示UTC中的日期/时间,而不是)。

这相当于我在美国东部时间下午4点在纽约时代广场的一位法国人旁边,并告诉他#格林威治标准时间下午4点及#34;他将在那里只是把我视为一个疯狂的美国人,他太无知了,知道格林威治标准时间晚上8点(或根据他的观察,在巴黎的CEST晚上10点)。

所以,也许你可以退一步告诉我们你要做什么,因为你问题中的代码没有意义。如果使用特定时区将日期转换为带有日期格式化程序的字符串,则如果要将其转换回日期,则必须使用相同的时区。 (或者您必须使用明确关于时区的日期格式;这就是NSLog使用yyyy-MM-dd HH:mm:ss +0000格式的原因,因此它明确指出NSDate的时间点{ {1}}代表。)

答案 2 :(得分:0)

        NSDateFormatter *formater = [[NSDateFormatter alloc] init];
        [formater setLocale:[NSLocale systemLocale]];
        [formater setDateFormat:@"yyyy-MM-dd"];
        NSString *todayString = [formater stringFromDate:[NSDate date]];
        NSLog(@"todayString ====%@", todayString);