2012-02-02 178 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) ...