gpt4 book ai didi

objective-c - 在某些情况下将 NSString 转换为 NSDate 会增加一年

转载 作者:行者123 更新时间:2023-11-28 18:00:23 24 4
gpt4 key购买 nike

自今年年底以来,我在将 NSString 转换为 NSDate 时遇到了一些问题。该代码以前一直运行良好,但突然开始表现得很奇怪...

例如,2013-01-05 转换为 NSDate 后变为 2014-01-05。

因为它已经整整一年了,所以感觉不像是时区吓人。

它不会对 2012 年的日期执行此操作。

有人知道哪里出了问题吗?

代码: NSString *dateString = postInfo.no​​teDate; NSString *newDateString = [dateString substringToIndex:10];

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"YYYY-MM-dd"];
NSDate *date = [[NSDate alloc] init];
date = [dateFormat dateFromString:newDateString];

newDateString 返回 2013-01-05

返回日期 2014-01-05

最佳答案

来自docs :

Y 1..n 1997 Year (in "Week of Year" based calendars). Normally the length specifies the padding, but for two letters it also specifies the maximum length. This year designation is used in ISO year-week calendar as defined by ISO 8601, but can be used in non-Gregorian based calendar systems where week date processing is desired. May not always be the same value as calendar year.

y 1..n 1996 Year. Normally the length specifies the padding, but for two letters it also specifies the maximum length.

所以你想要'yyyy'

这个“错误”也在精彩的 WWDC 2011 Video "Session 117 - Performing Calendar Calculations" 中进行了讨论。 ,任何 iOS/Cocoa 开发人员必看。

关于 ISO 8601 的维基百科文章


NSDate *date = [[NSDate alloc] init];
date = [dateFormat dateFromString:newDateString];

您创建一个 NSDate,然后创建另一个 NSDate 并覆盖第一个。就这样

NSDate *date = [dateFormat dateFromString:newDateString];

关于objective-c - 在某些情况下将 NSString 转换为 NSDate 会增加一年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14184648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com