NSDateFormatter的hh与HH和yyyy与YYYY出坑

原因

最近发现应用的倒计时显示为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,如若转载,请注明来源。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • longaaaa =14200666; Console.WriteLine(aaaa.ToString("N0")...
    鱼落于天阅读 4,466评论 0 1
  • ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year:...
    雨一流阅读 3,902评论 0 2
  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 11,087评论 0 33
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 10,437评论 0 6
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 10,507评论 1 13