我正在尝试将月份和日期与以下字符串分开。
2012-06-29
我尝试通过执行以下操作将字符串格式化为中等样式:
//Setting Up My Formatter
formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
Forming String Into Formatted Date
NSDate *dateFromString = [formatter dateFromString:event.date];
//Separating Components
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:dateFromString];
//Assigning Each Component to my Cell's Labels
cell.dayLabel.text = [NSString stringWithFormat:@"%d", [components day]];
cell.monthLabel.text = [NSString stringWithFormat:@"%d", [components month]];
当我运行NSLogs时,我的“event.date”回来了“2012-06-26& dateFromString返回null。任何人都可以帮助指导我朝着正确的方向发展吗?非常感谢!
所以我终于从你的帮助中发现我错误地设置了格式。而不是使用:
[formatter setDateStyle:NSDateFormatterMediumStyle];
我现在正在使用:
[formatter setDateFormat:@"yyyy-MM-dd"];
这是我的问题,但是从组件来看,月份将以整数形式返回(1,2,3),但我希望它以“MMM”(1月,2月,3月)的形式返回。谢谢!
答案 0 :(得分:2)
这是我将如何做到的:
首先创建一个NSDateFormatter以正确接收字符串:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:"yyyy-MM-dd"];
从字符串中获取日期:
NSDate *yourDate = [formatter dateFromString:@"2012-06-29"];
获取您日期的组件:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:yourDate];
获取组件的属性:
[components day];
[components month];
[components year];
发布需要发布的内容:
[formatter release];
评论回复:
是的,你应该反过来做。
创建另一个NSDateFormatter(使用参考:http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns)
NSDateFormatter *monthFormat = [[NSDateFormatter alloc] init];
[monthFormat setDateFormat:@"MMM"];
NSString *month = [monthFormat stringFromDate:yourDate];
[monthFormat release];
` 你可以在这一点上将它截断/大写为你想要的任何东西,因为你会得到小写的,也许有点太长。 (查看参考资料)
答案 1 :(得分:1)
dateFromString
失败了,因为你告诉它期望以下格式的字符串(来自NSDateFormatter reference):
1937年11月23日下午3:30
您需要使用以下内容设置自定义格式:
[formatter setDateFormat:@"yyyy-MM-dd"];
答案 2 :(得分:0)
尝试设置setDateFormat
[formatter setDateFormat:@“yyyy-MM-dd”];