NSDate dateFromString在设备语言更改时返回nil

时间:2016-08-12 12:51:06

标签: ios objective-c nsdate

我编写了一个简单的函数来从NSString返回NSDate。但它总是返回零。

方案是:

  1. 设备语言为英文,功能正常。
  2. 设备语言为阿拉伯语,函数返回nil。
  3. NSString值为“03:43 PM”。但是,如果日期格式为阿拉伯语,即“09:56ص”。它返回一个正确的日期。有什么想法吗?

    代码:

    - (NSDate*) GetTime:(NSString*) txt
    {
        NSDateFormatter *df=[[NSDateFormatter alloc] init];
        [df setDateFormat:@"hh:mm a"];
    
        return [df dateFromString:txt];
    }
    

1 个答案:

答案 0 :(得分:7)

根据上面的评论,将语言环境设置如下

- (NSDate*) GetTime:(NSString*) txt
{
    NSDateFormatter *df=[[NSDateFormatter alloc] init];
    [df setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];
    [df setDateFormat:@"hh:mm a"];

    return [df dateFromString:txt];
}

这将确保无论设备区域设置如何,如果您按照所需格式传递英文字符串,它将正确创建NSDate