2012-02-02 173 views
4

快速的问题,我有一个按名称的月份列表,即“一月”“二月”“三月”“四月”...等,我想转换为1,2,3,4等。已经写了一些简单的代码来做到这一点,但只是好奇,如果有人知道使用任何API的方式来做到这一点。从月份名称获取月份编号?

+2

鉴于在四月举行的法国将是无毒,何况日语或阿拉伯语,我想你低估本地化的问题,在这一问题;) – Kheldar 2012-02-02 15:22:49

+0

我只是从现有的数据表中读取数据,因此我的月份将始终是英文的“Jan”,“Feb”,“Mar”...格式,但是这根据数据的位置来自(哪里。 – fuzzygoat 2012-02-02 15:52:59

回答

13

快速回答:

NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; 
[formatter setDateFormat:@"MMM"]; 
NSDate *aDate = [formatter dateFromString:@"Jul"]; 
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSMonthCalendarUnit fromDate:aDate]; 
NSLog(@"Month: %i", [components month]); /* => 7 */ 

date formatters

+0

完美谢谢。 – fuzzygoat 2012-02-02 15:54:03

2

查看NSDateComponents class Ref。这将是你可能要考虑使用的课程。

+0

非常感谢,错过了那个,检查了NSDate和NSCalendar,谢谢。 – fuzzygoat 2012-02-02 15:55:39

2

得到了一些最简单的方法是让索引,如果几个月的列表进行排序:

NSLog(@"The number of the month is: %d.",[listOfMonths indexOfObject:@"Jan"]+1);

没有什么比这更直接。

+0

这是一个很好的观点,我当然可以创建一个数组并使用它来查找月份索引。不错的主意,谢谢。 – fuzzygoat 2012-02-02 15:56:47

+0

我很好奇,你想出了什么解决方案。 – 2012-02-02 16:24:48

0

为SWIFT用户可以使用:

Calendar.current.component(.month, from: date) Calendar.current.component(.day, from: date) ...