我有一个方法,
+ (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 没有正确地将我的字符串转换为日期。
我做错了什么吗?
谢谢
最佳答案
日期末尾的 +0000
表示 GMT。所有日期都相对于 GMT 存储;当您使用日期格式化程序将日期转换为字符串或将日期转换为字符串时,将包括您所在时区的偏移量。您可以使用 NSDateFormatter 的 -setTimeZone:
方法来设置使用的时区。
简而言之,您的代码没有做错任何事情。使用 [df stringFromDate:date];
查看日期是否正确。 (你也可以使用 NSDate 的 -descriptionWithCalendarFormat:timeZone:locale:
。)
关于objective-c - NSDateFormatter 从字符串中返回不正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8783667/