2011-05-09 17 views
10

我很生氣,可能是一個愚蠢的問題。根據currentLocale的NSDateformatter setDateFormat

我有3個字符串:年,月和日。我必須基於currentLocale正確的格式的日期,所以也就是說,如果currentLocale localeIdentifier是en_US我的日期格式應該是: MMM/DD/YYYY

,如果它是fr_FR時的日期格式應DD/MMM/YYYY

我不認爲做到這一點的唯一方法是獲得currentLocale localeIdentifier並從一堆開始,如果然後。

在此先感謝。

最大

回答

7

看NSDateComponents創建一個NSDate,然後使用NSDateFormatter格式化。 NSDateFormatter根據格式樣式使用當前區域設置格式化日期(例如
NSDateFormatterMediumStyle)。

+0

非常感謝。 NSDateComponents幫助。 – masgar 2011-05-09 16:19:46

34

如果我理解您的問題,您希望將NSDateFormatter設置爲用戶設備的區域設置。對於你可以做這樣的事情:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
[dateFormatter setLocale:[NSLocale currentLocale]]; 
NSDate *date = [NSDate date]; 
NSString *dateString = [dateFormatter stringFromDate:date]; 
+0

完美!謝謝。 – Septronic 2015-11-04 23:40:51

2
-(NSString *) stringFromDate:(NSDate *) date{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    [dateFormatter setLocale:[NSLocale currentLocale]]; 

    NSString *dateString = [dateFormatter stringFromDate:date]; 

    [dateFormatter release]; 

    return dateString; 
} 

-(NSDate *) dateFromString:(NSString *) dateInString{ 

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

    [dateFormatter setLocale:[NSLocale currentLocale]]; 

    NSDate *dateFromString = [dateFormatter dateFromString:dateInString]; 

    [dateFormatter release]; 

    return dateFromString; 
} 

我希望這有助於。

3

在斯威夫特3:

let formatter = DateFormatter() 
formatter.dateStyle = .medium 
formatter.timeStyle = .none 
formatter.locale = Locale.current 
let date = Date() 
let dateString = formatter.string(from: date) 
print(dateString) 
+0

NSLocale.currentLocale()不再有效 – 2016-11-17 00:34:34