NSDate dateFromString returns 设备语言更改时为零

NSDate dateFromString returns nil on Device Language Change

我写了一个简单的函数 return 来自 NSString 的 NSDate。但它总是 returning nil。

场景是:

  1. 设备语言为英文,功能正常。
  2. 设备语言为阿拉伯语,函数return无。

NSString 值为“03:43 PM”。但是,如果日期格式为阿拉伯语,即“٠٩:٥٦ ص”。 return 是正确的日期。有什么想法吗?

代码:

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

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

- (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.