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

Ali*_*ahr 2 objective-c nsdate ios

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

场景是:

  1. 设备语言为英文,功能正常.
  2. 设备语言为阿拉伯语,函数返回nil.

NSString值为"03:43 PM".但是,如果日期格式为阿拉伯语,即"09:56ص".它返回一个正确的日期.任何的想法?

码:

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

    return [df dateFromString:txt];
}
Run Code Online (Sandbox Code Playgroud)

RPK*_*RPK 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];
}
Run Code Online (Sandbox Code Playgroud)

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