2012-02-20 68 views
3

的一週,我想從一個日期得到的NSString,像這樣的日期格式:NSDateFormatter:年首個工作日

MMEEEY ww 

的問題是爲「WW」,一年的一週。我必須將這種格式與從後臺取得的另一種格式進行比較。但是後臺的第一個工作日是星期一,而iOS是星期一。所以,在星期天的時候,字符串是不一樣的,因爲一年中的那個星期不一樣。

的問題是: 如何強制NSDateFormatter使用週一首個工作日?

我試圖用firstWeekday屬性設置爲2的日曆設置NSDateFormatter的日曆屬性,但它不起作用。

這樣做的要點:

NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
calendar.firstWeekday = 2; 
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.calendar = calendar; 

編輯:諾亞的答案後,試驗

NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"]; 
dateFormatter.locale = locale; 
dateFormatter.dateFormat = @"MMEEEY ww"; 

NSDate * date = [NSDate dateWithTimeIntervalSince1970:1330251642]; // next sunday 

NSLog(@"%@ -> %@", date, [dateFormatter stringFromDate:date]); 

NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
calendar.firstWeekday = 2; 
dateFormatter.calendar = calendar; 

NSLog(@"%@ -> %@", date, [dateFormatter stringFromDate:date]); 

結果:

2012-02-24 11:31:27.878 Test[2546:15203] 2012-02-26 10:20:42 +0000 -> 02Sun2012 09 
2012-02-24 11:31:27.880 Test[2546:15203] 2012-02-26 10:20:42 +0000 -> 02Sun2012 09 

回答

1

基於一些測試,日期格式化程序似乎遵守日曆設置。也許你可以舉例說明你想要格式化的日期,你想要的結果以及你得到的結果。

NSDateFormatter * df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"MMEEEY ww"]; 

NSDate *date; 
date = [NSDate dateWithString:@"2012-01-01 12:00:00 +0000"]; 
NSLog(@"%@ -> %@", date, [df stringFromDate:date]); 

date = [NSDate dateWithString:@"2012-01-02 12:00:00 +0000"]; 
NSLog(@"%@ -> %@", date, [df stringFromDate:date]); 

NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
calendar.firstWeekday = 2; 
df.calendar = calendar; 

date = [NSDate dateWithString:@"2012-01-01 12:00:00 +0000"]; 
NSLog(@"%@ -> %@", date, [df stringFromDate:date]); 

date = [NSDate dateWithString:@"2012-01-02 12:00:00 +0000"]; 
NSLog(@"%@ -> %@", date, [df stringFromDate:date]); 

結果:

2012-02-22 12:42:17.020 test[68385:207] 2012-01-01 12:00:00 +0000 -> 01Sun2012 01 
2012-02-22 12:42:17.021 test[68385:207] 2012-01-02 12:00:00 +0000 -> 01Mon2012 01 
2012-02-22 12:42:17.022 test[68385:207] 2012-01-01 12:00:00 +0000 -> 01Sun2011 52 
2012-02-22 12:42:17.022 test[68385:207] 2012-01-02 12:00:00 +0000 -> 01Mon2012 01 

我不知道你是否希望2011 52個星期12年1月1日的一部分,但同樣,這就是爲什麼我要問你想要什麼樣的結果。

+0

感謝您的回答。我試圖做的完全一樣,但對我來說,它仍然無法正常工作......不明白爲什麼......無論如何,我們決定不使用日期格式的星期編號。奇怪的問題。 – syfonseq 2012-02-24 10:32:13