iOS dateFormatter dateFromString 月份问题
Posted
技术标签:
【中文标题】iOS dateFormatter dateFromString 月份问题【英文标题】:iOS dateFormatter dateFromString month issue 【发布时间】:2011-11-11 00:44:41 【问题描述】:希望这只是一个快速的,我错过了一些简单的东西......
我有一个 NSDateFormatter,用于将字符串 2011-11-10 转换为 Date 对象。
NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"YYYY-MM-DD"];
// input of 2011-11-10, output of 2011-01-10 00:00:00 +0000
[appointment setDate:[fmtDate dateFromString:
[tempAppointment objectForKey:@"date"]
]];
NSDateFormatter 的返回值存储在 managedObjectContext 中。我的问题是 dateFormatter 将日期返回为 2011-01-10 00:00:00 +0000
为什么将月份从 11 月缩短到 1 月?它可以保留年份和日期,但不能保留月份。
我是否需要在存储日期时包括小时?还是和我设置的格式有关?
【问题讨论】:
【参考方案1】:为“使用格式字符串指定自定义格式”部分中指定的here 格式尝试格式@"yyyy-MM-dd"。它有一个示例并将 YYYY 列为常见错误。
【讨论】:
这没什么区别,我还在 2011-01-10 00:00:00 +000 啊我错过了d!对,我更改了 YYYY -> yyyy 但修复它的是 DD -> dd。谢谢!【参考方案2】:您的日期格式字符串使用 YYYY 时不正确。试试 yyyy-M-d 或 yyyy-MM-dd
NSString *dateString = @"2011-11-10";
NSDateFormatter *fmtDate = [[NSDateFormatter alloc] init];
[fmtDate setDateFormat:@"yyyy-M-d"];
NSDate *date = [fmtDate dateFromString:dateString];
NSLog(@"date: %@", date);
输出:
2011-11-10 20:01:40.638 Craplet[81514:707] date: 2011-11-10 05:00:00 +0000
见:
http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns
【讨论】:
以上是关于iOS dateFormatter dateFromString 月份问题的主要内容,如果未能解决你的问题,请参考以下文章
ios 中用于 DateFormatters 的“区域”设置的目的
iOS dateFormatter dateFromString 月份问题
仍然对 Swift DateFormatter 和 .dateFormat 效率感到困惑