2014-12-04 18 views
5

我有這樣的代碼:weekdaySymbol列表是否始終以任何國家/地區的星期日開始?

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols]; 
NSLog(@"daysNames = %@", daysNames); 

它輸出:

daysNames = (
    Sunday, 
    Monday, 
    Tuesday, 
    Wednesday, 
    Thursday, 
    Friday, 
    Saturday 
) 

我的問題是:

如果用戶是比美國以外的國家,比方說法國和俄羅斯,將陣列仍然以星期天(不是星期一)開始,還是我不應該依賴這個?

事情是我設置了鬧鐘。在視覺上,用戶從表格視圖中選擇,該表格視圖總是在第一行中有星期一。而且,如果設置了一天或者沒有設置,我會根據事實將0或1保留在NSMutableArray中。如果daysNames [0]總是與星期天相對應,我可以輕鬆地將所有元素向右移動一個位置,並且所有內容都將正確映射,否則當星期從星期一開始而非星期天開始時,我會遇到更多令人頭疼的問題。

這是完整的代碼,我寫這個(在美國,它完美的作品):

// Set the short days names 

     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
     NSMutableArray *daysNames = [NSMutableArray arrayWithArray:dateFormatter.weekdaySymbols]; 
     NSLog(@"daysNames = %@", daysNames); 

     // daysNames will become @"SUN MON TUE WED THU FRI SAT"; 
     for (NSInteger i = 0; i < daysNames.count; i++) { 

      NSUInteger length = ((NSString *)daysNames[i]).length; 

      if (length > 3) { 
       length = 3; 
      } 

      daysNames[i] = [daysNames[i] substringToIndex:length].uppercaseString; 
     } 

     NSString *sundayShortName = daysNames[0]; 

     // daysNames will become @"MON TUE WED THU FRI SAT SUN"; 
     for (NSInteger i = 1; i < daysNames.count; i++) { 

      daysNames[i - 1] = daysNames[i]; 
     } 

     daysNames[daysNames.count - 1] = sundayShortName; 

     NSMutableArray *alarmDaysShortNames = [NSMutableArray array]; 

     for (NSInteger i = 0; i < alarm.alarmDays.count; i++) { 

      if ([alarm.alarmDays[i] boolValue] == YES) { 

       [alarmDaysShortNames addObject:daysNames[i]]; 
      } 
     } 

     alarmCell.alarmDaysLabel.text = [alarmDaysShortNames componentsJoinedByString:@" "]; 
+1

不,在法國,它將從Dimanche開始。另外,中國人在星期天有六七個不同的單詞,所以我不確定一個簡單的數組會不會削減它:-) – paxdiablo 2014-12-04 03:20:47

+0

謝謝!我其實並不是指一個不同的日子名字。我知道這將基於語言進行設置。我想知道如果daysNames [0]仍然是星期天(或Dimanche等),但不是星期一(或Lunedi等)。 – ppalancica 2014-12-04 03:23:51

+0

我的歉意,我誤解了這個問題。 – paxdiablo 2014-12-04 03:27:19

回答

3

是的。星期天總是那個列表中的第一個星期幾。您可以詢問NSCalendar以瞭解該列表在哪一週開始(美國人星期天,歐洲人星期一等)。

+0

謝謝!你剛纔說「星期天總是那個列表中的第一個星期的工作日」,但也是「星期一歐洲人」。你能檢查我發佈的完整代碼,並確認它將在歐洲和其他地方工作嗎?提前致謝! – ppalancica 2014-12-04 03:49:22

+1

Tommy,我試圖將iPhone上的語言更改爲俄羅斯語和羅馬尼亞語,並且我添加到問題的代碼似乎正常工作。你能看看它並確認它會起作用嗎?提前致謝! – ppalancica 2014-12-04 06:19:03

+1

@ppalancica是的,那應該是正確的。該列表將始終是(本地化版本)「星期日,星期一,星期二...」。哪一個指數是您從其他地方獲得的一週中的第一天。在你的情況下,如果你想承擔索引1,那麼你的代碼是正確的。 – Tommy 2014-12-05 21:16:58

0

是的,你不應該依賴於這一點。如果你想從星期一開始而不是星期天開始工作日。您可以嘗試這樣: -

NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 
[gregorian setFirstWeekday:2]; //it is for monday 
相關問題