爱普生cbx24:NSDateFormatter 24小时

关于爱普生cbx24的问题,在times 24中经常遇到, 我有一个倒计时器,它从当前日期 / 时间倒计时到特定的未来日期 / 时间。除了一个问题,它工作得很好。我使用NSDateFormatter和dateFromString输入未来日期。它似乎无法接受超过 12 的任何时间 (小时),尽管表明它不支持 24 小时制。有没有办法启用 24 小时制支持或解决方法代码?

我有一个倒计时器,它从当前日期 / 时间倒计时到特定的未来日期 / 时间。除了一个问题,它工作得很好。我使用NSDateFormatterdateFromString输入未来日期。它似乎无法接受超过 12 的任何时间 (小时),尽管表明它不支持 24 小时制。有没有办法启用 24 小时制支持或解决方法代码?

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *myDate = [df dateFromString:@"2010-03-14 15:00:00"];
68

NSDateFormatter 遵循Unicode standard for date and time patterns。在 24 小时制时钟上使用“H”表示小时:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *myDate = [df dateFromString:@"2010-03-14 15:00:00"];
58

我有同样的问题,使用 HH 只在一些设备上工作,像罗杰也验证了。最后,这是为我工作的解决方案,我希望它适用于其他人。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    [dateFormatter setLocale:enUSPOSIXLocale];
    NSString *dateFormat = @"dd/MM/yyyy HH:mm"; //MM for month, mm for minutes
    [dateFormatter setDateFormat:dateFormat];
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    date = [dateFormatter dateFromString:string];
13

我在 Swift 上的解决方案:

let formatter = NSDateFormatter()
var defIdentifer = formatter.locale.localeIdentifier
if !defIdentifer.hasSuffix("_POSIX") {
    defIdentifer = defIdentifer+"_POSIX"
    let locale = NSLocale(localeIdentifier: defIdentifer)
    formatter.locale = locale
}
formatter.dateFormat = "HH:mm"
4

我最近有一个类似的问题,而不是HHNSDateFormatter忽略hha(AM / PM 符号)和G(循环时代名称)在我的应用程序。

而且我很惊讶地发现,如果我去我的设备的本地化设置并做出一些随机选择,所有的怪胎都消失了,并且错误无法再次产生。非常奇怪。

然后我在模拟器上测试它做一些研究。有我的解决方案:

创建NSDateFormatter后,即使您使用当前区域设置,也要显式设置区域设置属性,更重要的是,不要使用[NSLocale currentLocale],这一个被,可以通过用户设置以某种方式“覆盖”,使用systemLocale或使用区域设置标识显式创建NSLocale实例。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(734)
智合云服务器租给谁:OracleWeblogic服务器14c合规性
上一篇
怎么更换c盘:IFilter更换
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(33条)