coc*_*doc 8 cocoa objective-c nsdate nsdateformatter
在我的机器上(区域设置美国),默认的"短"日期格式设置为"1/5/13"(月/日/年).
在系统偏好设置中,我附加了一个星期编号"1/5/13 1".
我的问题是这段代码,我尝试将字符串转换为日期:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSDate *date = [dateFormatter dateFromString:@"1/5/13 1"];
NSLog(@"Date: %@", date);
Run Code Online (Sandbox Code Playgroud)
在我的机器上,这打印:
Date: 2000-01-01 05:00:00 +0000
Run Code Online (Sandbox Code Playgroud)
那是2000年,甚至还不到2013年.
是什么导致了这个问题?
我迟到了这个讨论,并且已经看到了许多提供的解决方案,但我认为它们全部错误的是两个不兼容的日期格式元素一起使用.您的原始方法失败,因为您尝试获取日期的字符串与提供的字符串不符NSDateFormatterShortStyle.
如果你要评估一年中的一周,那么你必须使用当年的大写形式; 这提供了"年度周"类日历.
让我们重新编写您的原始代码以包含新格式:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/YY w"];
NSDate *date = [dateFormatter dateFromString:@"1/5/13 1"];
NSLog(@"Date: %@", date);
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用该年份的大写形式.一年中有1个星期,我得到这个:
Date: 2013-01-05 08:00:00 +0000
Run Code Online (Sandbox Code Playgroud)
一年中有2个星期:
Date: 2013-01-12 08:00:00 +0000
Run Code Online (Sandbox Code Playgroud)
和3:
Date: 2013-01-19 08:00:00 +0000
Run Code Online (Sandbox Code Playgroud)
有道理,不是吗?日期中的日期增加7天,每个增量按一周中的一周增加.当然,时间已经过去了,但我们从未讨论过要在该领域进行评估的任何事情,是吗?
| 归档时间: |
|
| 查看次数: |
1201 次 |
| 最近记录: |