Ios NSDateFormatter:stringFromDate和dateFromString不可逆?
使用带有Ios NSDateFormatter:stringFromDate和dateFromString不可逆?,ios,nsdateformatter,Ios,Nsdateformatter,使用带有NSDateFormatter的自定义日期格式化程序将字符串转换为日期时遇到问题。下面是一个简短的示例,它从今天的日期创建一个字符串,但无法将其转换回NSDate: NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"Mdyyyy"]; NSString *example = [dateFormatter stringFromDate:now];
NSDateFormatter
的自定义日期格式化程序将字符串转换为日期时遇到问题。下面是一个简短的示例,它从今天的日期创建一个字符串,但无法将其转换回NSDate
:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"Mdyyyy"];
NSString *example = [dateFormatter stringFromDate:now]; // e.g., 10292013
NSDate *reverse = [dateFormatter dateFromString:example]; // nil?
因此,基本上看来,NSDateFormatter
正在创建一个日期字符串,它本身无法使用创建该字符串的相同格式将其转换回NSDate
使用MMddyyyy
作为日期字符串工作,尽管我无法从中看出(它只方便地升级到iOS 6.0)为什么重要:
month M 1..2 09 Month - Use one or two for the numerical month, ....
...
day d 1..2 1 Date - Day of the month
我之所以尝试使用Mdyyyy
而不是mmddyyy
是因为它更接近于NSDateFormatterShortStyle
为我当前的NSLocale
(m/d/yy
)返回的内容
也许有人对我做错了什么,或者我对这应该如何工作的理解是错误的,在这里有一些见解。(我知道这里有很多关于
NSDateFormatter
的问题,但我没有找到一个适合我的问题。)Mdyyyy作为字符串->日期映射是不明确的。我们无法判断“1112013”是1月11日还是11月1日。因此,NSDateFormatter将不允许它用于字符串->日期。Mdyyyy作为字符串->日期映射是不明确的。我们无法判断“1112013”是1月11日还是11月1日。因此,NSDateFormatter将不允许它在字符串->日期中使用。@HotLicks,啊,当然了,我想它不在乎在创建字符串时不能读回它。。。。如果你愿意发布一个答案,我会接受的。