0

我有一个按天分隔的部分的表格视图,如下所示:

2012 年 1月 15 日 2012 年
1 月 16 日 2012 年
1 月 21 日 2012 年
1 月 30 日 2012 年
1 月 31 日 2012 年
2 月 1 日 2012 年
2 月 2 日

我正在使用以下代码:

UILabel * lbDayOfWeek = (UILabel *)[cell viewWithTag:1];
NSDate * date = [m_arEventsSorted objectAtIndex:section];
NSDateFormatter* theDateFormatter = [[NSDateFormatter alloc] init];
[theDateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4];
[theDateFormatter setDateFormat:@"EEEE"];
NSString * weekDay =  [theDateFormatter stringFromDate:date];
lbDayOfWeek.text = weekDay;

UILabel * lbMonthDayYear = (UILabel *)[cell viewWithTag:2];
[theDateFormatter setDateFormat:@"MMM D YYYY"];
NSString * monthDayYear =  [theDateFormatter stringFromDate:date];
lbMonthDayYear.text = monthDayYear;

但我的日子不会在月底重新开始。例如,我得到以下信息:

2012 年 1月 15 日 2012 年
1 月 16 日 2012 年
1 月 21 日 2012 年
1 月 30 日 2012 年
1 月 31 日 2012 年
2 月 32 日 2012 年
2 月 33 日

我不确定为什么上面的代码输出错误的日期。

4

2 回答 2

3

检查格式说明符。大写的“D”表示一年中的一天,当您想要一个月中的一天时。二月的第一天也是一年的第32天。

您的格式字符串应该是@"MMM d yyyy".

(还要注意小写和大写 'y' 之间的区别。您几乎总是需要小写 - 请参阅数据格式指南中“日期格式:固定格式”下的注释 #1。)

于 2013-01-06T22:56:41.550 回答
0

您正在寻找 NSDateFormatterMediumStyle,不要设置格式,设置样式而不是格式:

[theDateFormatter setDateFormat: NSDateFormatterMediumStyle];

仅当您找不到符合您需要的样式时才应使用日期格式。在这种情况下,格式为@"MMM d, yyyy".

于 2013-01-06T21:44:12.910 回答