天天看點

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 ,如若轉載,請注明來源。

繼續閱讀