NSDateFormatter返回null具体日期(NSDateFormatter returns

2019-08-01 02:22发布

我在与一个问题NSDateFormatter 。 它返回null的一些具体日期。

我做了这个功能调试的情况下:

- (void) debugTest:(NSString *)dateStr{

    NSLog(@"String: %@", dateStr);

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setDateFormat:@"yyyy-MM-dd"];

    NSDate *dateObj = [df dateFromString: dateStr];

    NSLog(@"Date: %@", dateObj);

}

这是我的一些日期日志输出:

String: 2012-10-18
Date: 2012-10-18 03:00:00 +0000
String: 2012-10-19
Date: 2012-10-19 03:00:00 +0000
String: 2012-10-20
Date: 2012-10-20 03:00:00 +0000
String: 2012-10-21
Date: (null)
String: 2012-10-22
Date: 2012-10-22 02:00:00 +0000
String: 2012-10-23
Date: 2012-10-23 02:00:00 +0000

为什么它是空只返回的日期2012-10-21

我还做了其他的测试从间隔2011-10-01 to 2014-11-01和下面的日期返回null

2011-10-16, 2012-10-21, 2013-10-20, 2014-10-19

这是某种错误的? 我做错了什么?

Answer 1:

我会回答我的问题只是在别人得到了同样的问题的情况下进行注册:

我加入到我的日期格式[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];[df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

所以,我的新代码是:

- (void) debugTest:(NSString *)dateStr{

    NSLog(@"String: %@", dateStr);

    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [df setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
    [df setDateFormat:@"yyyy-MM-dd"];

    NSDate *dateObj = [df dateFromString: dateStr];

    NSLog(@"Date: %@", dateObj);

}

我认为这个问题是有关设备的配置,设置两个属性固定的问题。



文章来源: NSDateFormatter returns null for specific dates