NSDate dateFromString returns 设备语言更改时为零
NSDate dateFromString returns nil on Device Language Change
我写了一个简单的函数 return 来自 NSString 的 NSDate。但它总是 returning nil。
场景是:
- 设备语言为英文,功能正常。
- 设备语言为阿拉伯语,函数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
.
我写了一个简单的函数 return 来自 NSString 的 NSDate。但它总是 returning nil。
场景是:
- 设备语言为英文,功能正常。
- 设备语言为阿拉伯语,函数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
.