2012年1月16日
2012年1月21日
2012年1月30日
2012年1月31日
2012年2月1日
2012年2月2日
2012年1月16日
2012年1月21日
2012年1月30日
2012年1月31日
2012年2月32日
2012年2月33日
我有一个tableview,分段按天分隔,如下所示:
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日
我不确定为什么上面的代码输出错误的日期。
查看格式说明符。大写的"D"表示年的日期,当您想要月的日期时。2月的第一天也是一年中的第32天。
格式字符串应该是@"MMM d yyyy"
。
(还要注意小写字母和大写字母"y"之间的区别。您几乎总是希望使用小写字母(参见数据格式指南中"日期格式:固定格式"中的注释#1)
你正在寻找NSDateFormatterMediumStyle,不要设置格式,设置样式而不是格式:
[theDateFormatter setDateFormat: NSDateFormatterMediumStyle];
日期格式应该只在你找不到符合你需要的样式时使用。在本例中,格式为@"MMM d, yyyy"
。