NSDateFormatter从字符串返回错误的日期

Tea*_*App 6 objective-c nsdate nsdateformatter ios

我有一个方法,

+ (NSDate *) convertToDateFrom:(NSString *) dateString
{
    if (dateString == nil || [dateString isEqual:@""]) return nil; //return nil if dateString is empty
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
        [df setDateFormat:@"EEEE, dd MMMM yyyy HH:mm"];

    NSDate *date = [df dateFromString:dateString];

    return date;
}
Run Code Online (Sandbox Code Playgroud)

我过的时候

@"Monday, 21 November 2011 17:01" //Passed string
Run Code Online (Sandbox Code Playgroud)

它返回错误的日期,

2011-11-21 23:14:00 +0000 // Output
Run Code Online (Sandbox Code Playgroud)

我不确定我是否正确使用这些标志或NSDateFormatter没有正确地将我的字符串转换为日期.

难道我做错了什么?

谢谢

Cal*_*leb 13

+0000在约会结束时表示GMT.所有日期都相对于GMT存储; 当您使用日期格式化程序将日期转换为字符串或反之亦然时,将包含您的时区的偏移量.您可以使用NSDateFormatter的-setTimeZone:方法来设置使用的时区.

简而言之,您在代码中没有做错任何事情.使用[df stringFromDate:date];地看到,日期是正确的.(您也可以使用NSDate -descriptionWithCalendarFormat:timeZone:locale:.)

  • “说明”(如果仅将NSDate对象记录为对象,则默认情况下会显示该内容)向您显示UTC时间。 (2认同)