objective-c - NSDateFormatter 从字符串中返回不正确的日期

标签 objective-c ios nsdate nsdateformatter

我有一个方法,

+ (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/

相关文章:

objective-c - ARC 支持 myiVar = nil 吗?

ios - 如何在 UIScrollView 中缩放 UIImageView?

objective-c - NSArray 内的 NSDictionary

ios - 将 kCVPixelFormatType_420YpCbCr8BiPlanarFullRange 缓冲区转换为 RGB 缓冲区会创建蓝色图片

iphone - 如何开发人脸识别 iPhone 应用程序?

javascript - react native 路由器通量: Nested router in components

iphone - 图片无法从 iOS 6 发布到 Instagram

ios - 解析网 + NSDate : Convert Parse Date Retrieved to local timezone

nsdate - 我无法将此日期时间字符串从 Django 转换为 iOS NSDate

ios - NSDATE 到日期时间选择器