NSDateFromatter 没有给出正确的 MMMM 值
Posted
技术标签:
【中文标题】NSDateFromatter 没有给出正确的 MMMM 值【英文标题】:NSDateFromatter not giving the proper MMMM value 【发布时间】:2010-12-04 00:07:43 【问题描述】:这让我发疯了,有人请告诉我我在哪里搞砸了。
我也创建了一个新项目来测试它。环境是在模拟器中运行的xcode 3.2.5,在设备上运行结果相同。
当我创建一个日期格式化程序并设置其格式然后传入一个字符串时,日期格式化程序无法正常工作。
int tmpMonth = 11;
int tmpYear = 2010;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"m/d/yyyy"];
NSString *dateAsString = [[NSString alloc] initWithFormat:@"%d/23/%d",tmpMonth,tmpYear];
NSDate *theDate = [[NSDate alloc] initWithTimeInterval:0 sinceDate:[dateFormatter dateFromString:dateAsString]];
[dateFormatter setDateFormat:@"MMMM d, yyyy"];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
[dateFormatter setDateFormat:@"m/d/yyyy"];
NSLog(@"%@",[dateFormatter stringFromDate:theDate]);
[dateFormatter release];
[theDate release];
[dateAsString release];
这会导致以下输出:
[Session started at 2010-12-03 17:47:04 -0600.]
2010-12-03 17:47:05.274 wtfDateFormatter[18970:207] January 23, 2010
2010-12-03 17:47:05.277 wtfDateFormatter[18970:207] 11/23/2010
我不确定为什么在我给它格式 MMMM 时它会打印一月,因为这在我的应用程序的其他部分工作得很好,它只是使用不同的 NSDate 源。
【问题讨论】:
【参考方案1】:您使用“m”作为月份编号,用于解释和生成字符串。不幸的是,'m' 是分钟。请改用“M”。
【讨论】:
该死。就是这样。我知道我已经看这个太久了【参考方案2】:如果将 tmpMonth 设置为 12,输出会是什么?我想知道它会留在一月还是切换到二月?
【讨论】:
以上是关于NSDateFromatter 没有给出正确的 MMMM 值的主要内容,如果未能解决你的问题,请参考以下文章