NSDateFormatter dateFromString returns nil 对于一个特定的日期

NSDateFormatter dateFromString returns nil for one specific date

我的日期格式化程序 return 一个特定日期为零:“1998 年 3 月 20 日”。

+ (NSDate*)dateFromString:(NSString*)date
{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    [df setLocale:[NSLocale currentLocale]];
    if ([WPRConverter isUropeanMetrics])
        [df setDateFormat:@"dd MMM, yyyy"];
    else
        [df setDateFormat:@"MMM dd, yyyy"];
    return [df dateFromString:date];
}

我检查了临近的日期,并且都return编辑正确:

我的语言环境是 "en_US"。

使用 [NSDateFormatter getObjectValue:forString:range:error:] 得到错误:

The value “20 Mar, 1998” is invalid. FailureReason: The value “20 Mar, 1998” is invalid. RecoverySuggestion: Please provide a valid value. RecoveryOptions: Code: 2048

这与以色列的 timeZone 有关,以色列有一个夏令时更改(参见 http://timeanddate.com/time/change/israel/karmiel?year=1998)。

将时区更改为 GMT:

formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]

应该可以解决问题。