Objective c 此模式“YYYY”的dateFromString和stringFromDate之间的差异

Objective c 此模式“YYYY”的dateFromString和stringFromDate之间的差异,objective-c,nsdateformatter,Objective C,Nsdateformatter,想要了解此模式YYYY的dateFromString和stringFromDate之间的差异 因为我已经为dateFromString和stringFromDate编写了以下逻辑,但结果不同于2019年12月30日星期一09:05:00和2020年12月30日09:05 所以,我们要把它放在下面 string to date == Mon Dec 30 09:05:00 2019 date to string == 2020/12/30 09:05 两个或相同的模式YYYY它作为基于周的日

想要了解此模式YYYY的dateFromString和stringFromDate之间的差异

因为我已经为dateFromString和stringFromDate编写了以下逻辑,但结果不同于2019年12月30日星期一09:05:00和2020年12月30日09:05

所以,我们要把它放在下面

 string to date == Mon Dec 30 09:05:00 2019
 date to string == 2020/12/30 09:05

两个或相同的模式YYYY它作为基于周的日历工作。但是为什么2019年和2020年的年份值在使用以下方法dateFromString和stringFromDate时有所不同?

使用yyyy时,您将得到日历数字年份。 YYYY您将获得一年中的一周,这可以完成您正在经历的边界翻转。阅读以下文件:


当我遇到日期格式化程序的问题时,我通常会访问这个网站

2019-12-30的周数为2020年第1周。2020年第1周的年份为2020年。尝试格式yyyy/MM/dd HH:MM yyyy w年中的一周结果是2019/12/30 09:05 2020 1。

注意yyyy与yyyy不同,通常您想要yyyy。阅读文档:使用yyyy而不是yyyy。这是否回答了您的问题?是的,“YYYY”指的是基于周的日历,但同时我在2019年和2020年得到了两个不同的结果,在同一模式下使用dateFromString和stringFromDate。string to date==2019年12月30日星期一09:05:00,因为实际上是2019年。因为我们通常不使用基于周的日历,而是基于年的日历,所以XCode会将其打印出来。这是您打印的NSDate对象,而不是NSString。如果你愿意的话,它是从1970年开始在时间间隔中转换的同一个点。只是说明打印与“YYYY”日历周不同。但同一时间,我得到了2019年和2020年的两个不同结果,在同一模式YYYY'中使用方法dateFromString和stringFromDate。您不应该使用两个不同的NSDateFormatter。仅使用一个并更改格式。两个区域设置都应为回复的sameThanks。即使使用相同的NSDateFormatter,2019年和2020年使用dateFromString和stringFromDate也会有所不同。所以我想知道两者的区别,对不起,我不知道你问题的深层原因。他们在文件中指出,这可能是一种可能性,因为日历上有52周,但在大多数情况下,前一年的第一天并不是新一周的开始,这就是我猜测的原因happening@iSara您打印了一个NSDate对象。苹果决定何时使用%@格式打印它,这实际上是调用description方法,在内部以yyyy格式显示它,因为它是最常见的格式。以前,它没有打印日期,更像是ISO8601的外观。它代表同一时间点。
 string to date == Mon Dec 30 09:05:00 2019
 date to string == 2020/12/30 09:05