NSDateFormatter的hh与HH和yyyy与YYYY出坑

简介: 原因最近发现应用的倒计时显示为00:00:00,开始以为后台给的时间问题,然后怀疑是缓存问题,跟着代码调试了很久,终于发现原因。 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.

原因

最近发现应用的倒计时显示为00:00:00,开始以为后台给的时间问题,然后怀疑是缓存问题,跟着代码调试了很久,终于发现原因。

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
    NSDate *nowDate = [formatter dateFromString:currentTime];

  • 发现一台设备调试显示: nowDate == nil
  • 其它设备日期显示正确

解决

** @"yyyy-MM-dd hh:mm:ss"; ** 改成** @"yyyy-MM-dd HH:mm:ss"; **

  • hh:mm:ss
    按照12小时制的格式进行字符串格式化
    如果时间处于00:00:00——12:59:59,则返回的字符串正常
    如果时间处于13:00:00——23:59:59,则返回的字符串是实际时间-12小时后的值,也就是说比真实的时间少了12个小时。

  • HH:mm:ss
    按照24小时制的格式进行字符串格式化
    ** 当手机时间为任意一个区间,则返回的字符串都是正常的。**

参考

时间格式化hh:mm:ss和HH:mm:ss区别
NSDateFormatter的yyyy和YYYY到底什么区别


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

目录
相关文章
|
5月前
2021-10-10T16:00:00.000Z: expected format yyyy-MM-dd HH:mm:ss 时间戳格式化
2021-10-10T16:00:00.000Z: expected format yyyy-MM-dd HH:mm:ss 时间戳格式化
|
7天前
|
JavaScript
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
7 0
|
18天前
|
前端开发 Java
关于时间格式yyyy-M-d或yyyy-MM-d到yyyy-MM-dd的转换
关于时间格式yyyy-M-d或yyyy-MM-d到yyyy-MM-dd的转换
21 0
|
3月前
joda time将10位或者13位时间戳转为标准日期格式: yyyy-MM-dd HH:mm:ss
joda time将10位或者13位时间戳转为标准日期格式: yyyy-MM-dd HH:mm:ss
|
10月前
|
JavaScript 前端开发
【JS】获取当前时间,且格式为yyyy-MM-dd hh:mm:ss
【JS】获取当前时间,且格式为yyyy-MM-dd hh:mm:ss
144 0
|
10月前
|
Java
LocalDateTime序列化成yyyy-MM-dd HH:mm
LocalDateTime序列化成yyyy-MM-dd HH:mm
139 0
|
10月前
|
Java
Java时间格式转换yyyyMMddHHmmss--yyyy-MM-dd HH:mm:ss
Java时间格式转换yyyyMMddHHmmss--yyyy-MM-dd HH:mm:ss
169 0
|
11月前
|
NoSQL Java Redis
别再踩坑, yyyy-MM-dd和YYYY-MM-dd格式化日期的区别你知道吗?
别再踩坑, yyyy-MM-dd和YYYY-MM-dd格式化日期的区别你知道吗?
200 0
别再踩坑, yyyy-MM-dd和YYYY-MM-dd格式化日期的区别你知道吗?
yyyy-MM-dd和YYYY-MM-dd不是一样的吗?
最近的一个项目中遇到了一个非常有趣的bug,原来yyyy-MM-dd和YYYY-MM-dd是有差异的,具体有什么不同呢?
T16:00:00.000Z: expected format yyyy-MM-dd HH:mm:ss 时间戳格式化
T16:00:00.000Z: expected format yyyy-MM-dd HH:mm:ss 时间戳格式化
795 0