Raf*_*ael 6 null date-format nsdateformatter ios
我遇到了问题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);
}
Run Code Online (Sandbox Code Playgroud)
这是某些日期的日志输出:
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
Run Code Online (Sandbox Code Playgroud)
为什么它仅为日期返回null 2012-10-21?
我做了其他测试,间隔时间2011-10-01 to 2014-11-01和返回的日期null:
2011-10-16, 2012-10-21, 2013-10-20, 2014-10-19
Run Code Online (Sandbox Code Playgroud)
这是某种错误吗?我做错了什么?
我会回答我自己的问题只是为了注册以防有人遇到同样的问题:
我添加到我的日期格式化程序
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];AND [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);
}
Run Code Online (Sandbox Code Playgroud)
我认为问题与设备的配置有关,设置两个属性解决了问题。
| 归档时间: |
|
| 查看次数: |
1243 次 |
| 最近记录: |