我有一个方法,
+ (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; }
我过的时候
@"Monday,21 November 2011 17:01" //Passed string
它返回错误的日期,
2011-11-21 23:14:00 +0000 // Output
我不确定我是否正确使用这些标志或NSDateFormatter没有正确地将我的字符串转换为日期.
难道我做错了什么?
谢谢
解决方法
@H_403_21@ 日期结束时的0000表示GMT.所有日期都相对于GMT存储;当您使用日期格式化程序将日期转换为字符串或反之亦然时,将包含您的时区的偏移量.您可以使用NSDateFormatter的-setTimeZone:方法来设置使用的时区.简而言之,您在代码中没有做错任何事情.使用[df stringFromDate:date];看到日期是正确的. (您也可以使用NSDate的-descriptionWithCalendarFormat:timeZone:locale:.)