Objective c 日数日期格式在月底后继续计数

Objective c 日数日期格式在月底后继续计数,objective-c,cocoa-touch,formatting,nsdateformatter,Objective C,Cocoa Touch,Formatting,Nsdateformatter,我有一个表格视图,各部分以天分隔,如下所示: 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* theDateFo

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

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日


我不知道为什么上面的代码输出的日期不正确。

您正在查找NSDATEFormatterminiumStyle,不要设置格式,请设置样式而不是格式:

[theDateFormatter setDateFormat: NSDateFormatterMediumStyle];

只有在找不到符合需要的样式时,才应使用日期格式。在这种情况下,格式将为
@“MMM d,yyyy”

如果您正在查找NSDateFormatTermeLiumStyle,请不要设置格式,请设置样式而不是格式:

[theDateFormatter setDateFormat: NSDateFormatterMediumStyle];
只有在找不到符合需要的样式时,才应使用日期格式。在这种情况下,格式将是“mmmd,yyyy”

请查看。大写字母“D”表示一年中的某一天,即您想要的月份中的某一天。二月的第一天也是一年中的第三十二天

您的格式字符串应为
@“MMM d yyyy”

(还要注意小写字母和大写字母“y”之间的区别。您几乎总是希望使用小写字母——请参见《数据格式指南》下的注释1。)

查看。大写字母“D”表示一年中的某一天,即您想要的月份中的某一天。二月的第一天也是一年中的第三十二天

您的格式字符串应为
@“MMM d yyyy”

(还要注意小写字母和大写字母“y”之间的区别。您几乎总是希望使用小写字母——请参见《数据格式指南》下的注释#1。)