我试图解决臭名昭着的问题,即NSDateFormatter返回&am 39; am / pm'当用户的定位时间设置为12小时而不是默认的24小时时,不需要的日期(覆盖格式字符串)
在阅读之后,似乎最好的解决方案是将dateFormatter语言环境设置为en_US_POSIX(我们将其用于API调用,因此需要忽略任何用户首选项)
然而,它似乎被忽略了?
我有一个类别如下:
@implementation NSDateFormatter (Locale)
- (id)initWithSafeLocale {
static NSLocale* en_US_POSIX = nil;
self = [self init];
if (en_US_POSIX == nil) {
en_US_POSIX = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
}
[self setLocale:en_US_POSIX];
return self;
}
@end
然后我打电话给:
sharedInstance.dateFormatter = [[NSDateFormatter alloc] initWithSafeLocale];
[sharedInstance.dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"];
但是,日期仍然打印为
2015-09-28 11:00:00 pm +0000
我做错了什么似乎忽略了setLocale?
参考:What is the best way to deal with the NSDateFormatter locale "feechur"?
答案 0 :(得分:2)
问题在于您使用@keyframes bner_01 {
0% {
transform: rotate(-5.9deg) translateX(0%);
}
100% {
transform: rotate(-5.9deg) translateX(-50%);
}
}
打印日期的方式。这将调用将使用用户默认语言环境的NSLog()
。
来自docs([NSDate description]
):
如果您通过
descriptionWithLocale
,nil
会以与日期相同的方式格式化日期NSDate
财产。在OS X v10.4及更早版本中,此参数是
description
对象。 如果您在OS X v10.5上传入NSDictionary
对象,则NSDictionary
使用。{ 默认用户区域设置 - 与传入NSDate
时相同。
相反,您应该使用日期格式化程序来打印格式化的字符串。