簡體   English   中英

NSDateFormatter中的問題將NSDate轉換為字符串

[英]Issue in NSDateFormatter converting NSDate into string

今天,我的一位客戶報告了一個錯誤,該錯誤是應用程序功能之一突然停止工作的。 在對功能進行單元測試之后,我知道NSDateFormatter轉換了錯誤的日期。 也許您也經歷過同樣的經歷。 下面是我的代碼

 self.frmt2=[[NSDateFormatter alloc]init];
 [self.frmt2 setDateFormat:@"YYYY-MM-dd”];
 self.str_DateTogetData=[self.frmt2 stringFromDate:[NSDate date]];

如果我的系統日期在29-12-2014、30-12-2014、31-12-2014之間,則將日期轉換為字符串后,其顯示為29-12-2015、30-12-2015、31-12-2015,但如果我的系統日期不在這三個日期之間,則上面的代碼將NSDate正確轉換為字符串。但是如果我使用下面的代碼,則其將NSDate正確轉換為字符串

 self.frmt2=[[NSDateFormatter alloc]init];
 [self.frmt2 setDateFormat:@"yyyy-MM-dd”];
 self.str_DateTogetData=[self.frmt2 stringFromDate:[NSDate date]];

我的問題已解決,但我想知道為什么會發生。 任何人都有答案。

yyyy指定日歷年,而YYYY指定年份(“一周中的一周”)。

Date Formatter文檔中 ,檢查“ 使用格式字符串指定自定義格式”部分的最后2點

- 日期格式化程序中的小錯誤

它使用yyyy指定年份組成部分。 一個常見的錯誤是使用YYYY yyyy指定日歷年,而YYYY指定在ISO年周日歷中使用的年份(“年中的一周”)。 在大多數情況下, yyyyYYYY產生相同的數字,但是它們可能不同。 通常,您應該使用日歷年

您的日期格式化程序應使用此格式[self.frmt2 setDateFormat:@"yyyy-MM-dd"]

您關於YYYY和yyyy相同的“知識”是完全錯誤的。

在該線程中已經多次解釋了它們不相同,現在您實際上已經更新了問題以說它們是相同的。 他們不是。

您完全了解YYYY的用途嗎? 它適用於您數周的情況。 2014年的第1周,2014年的第2周,依此類推。 從周一的一周內,2014年12月29日至周日,2015年3月4日是一個星期,而且由於其第四天是在2015年,它是2015年的第一個星期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM