NSdateFormatter中YYYY與yyyy出現的事件錯誤問題--爬坑

  昨天正值週末,可是公司卻忽然告訴我線上版本,沒法請求數據。我試了一下,還真是!彈窗報的Token Overtime!這就奇了怪了,猜測是時間不對,打印了一下事件,發現居然是2016年12月27號。(滿頭黑線)我就不信了,這好好的時間怎麼會錯了呢,因而乎就spa

1  NSDate *date = [[NSDate alloc]init];
2     NSLog(@"%@",date);

  輸出結果是對的,2015年12月27日。那就是NSDateFormatter的錯了,又試了下代碼規範

1     NSDate *date = [[NSDate alloc]init];
2     NSLog(@"%@",date);
3     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
4     [formatter setDateFormat:@"YYYYMMdd"];
5     NSString *dateStr = [formatter stringFromDate:date];
6     NSLog(@"%@",dateStr);

  呵呵噠!!輸出結果是2016年12月27號,我真是醉了呀,這都能錯。在谷歌上找了一下,還真有人遇到過,原來是事件格式[formatter setDateFormat:@"YYYYMMdd"];中用的是YYYY,而大Y表示的按周計算年12月27恰好是2015年的最後一個週末,而按美國來算,週末是一週的第一天,因此按@"YYYYMMdd"formatter以後就變成了16年。code

  把事件格改成[formatter setDateFormat:@"yyyyMMdd"];orm

  一切OK;。blog

   處處都是坑,仍是要注意代碼規範,細心!事件

相關文章
相關標籤/搜索