团队,我正在将使用NSDateFormatter由字符串形成的日期与iOS系统日期进行比较。当系统日期时间设置为24小时时间ON时,以下语句返回true,但当24小时时间OFF时,相同的代码返回false。
问题代码:
if ([(NSDate*)[NSDate date] compare:currDate] == NSOrderedAscending) {
// -- Code -- This is executed only when the 4-Hour Time ON
}
我很困惑。我用来获取日期的字符串是24小时格式的。这是个问题吗?或者其他什么?
日期格式代码:
-(NSDate *)getDateFromString:(NSString *)dateString{
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
[fmt setDateFormat:@"dd MMM yyyy hh:mm:ss"];
[fmt setTimeZone:[NSTimeZone systemTimeZone]];
[fmt setFormatterBehavior:NSDateFormatterBehaviorDefault];
return [fmt dateFromString:dateString];
}
请参阅苹果的技术问答;A 1480。
您需要将日期格式化程序的区域设置为en_US_POSIX
的特殊区域设置。您还需要指定一个24小时的格式——HH
,而不是hh
。
-(NSDate *)getDateFromString:(NSString *)dateString{
NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
[fmt setLocale:posix];
[fmt setDateFormat:@"dd MMM yyyy HH:mm:ss"];
return [fmt dateFromString:dateString];
}
23 May 2013 15:37:00
是一个24小时格式的字符串。因此,使用24小时格式的日期格式化程序可以获得正确的日期。这就是
所以使用
[fmt setDateFormat:@"dd MMM yyyy HH:mm:ss"];