2017-02-25 32 views
2

在我的遊樂場,Calendar.current.firstWeekday == 1,我解釋爲爲什麼是Calendar.current.firstWeekday == 2?

「星期一是我住的一週(瑞典)的第一天」

但是,當我運行模擬器Calendar.current.firstWeekday == ,我不明白爲什麼! (在模擬器的設置我已將該區域設置爲「瑞典」)。

let c = Calendar.current 
print(c) // prints "gregorian" 
let first = Calendar.current.firstWeekday // this is 2 !!! 

問題:爲什麼Calendar.current.firstWeekday == 2以及我如何解決這一問題?

回答

5

我解釋爲

我相信你的解釋是錯誤的。我不確定這個框架是如何分配星期幾的,但是從你的問題來看,我相信他們會從1到7,其中1是星期日,2是星期一等等。這些是靜態的,不會隨着您的設置而改變。

firstWeekday屬性告訴您一週中哪一天是您的語言環境開始的一週。在美國,這是默認的語言環境,一週從星期天開始。

你不能「修復這個」,因爲沒有什麼是錯的,那個屬性在那裏爲你提供繪製日曆時特別有用的信息。

+0

+1,謝謝這可能是答案。我假設0是本週的第一天,但​​如果它是1,那麼它會解釋一切! – ragnarius

+0

這很不尋常,因爲我們習慣以0開始的索引,但我只是在操場上試過這個,實際上,星期六是7,星期日是1. – EmilioPelaez

+0

但是從DateFormatter()中得到的列表。weekdaySymbols,星期天是第0天:-( – ragnarius

2

在操場上,區域設置默認設置爲美國本地化。因此,它表示一週的第一天是1 /星期天,美國就是這樣。

當您在模擬器中運行代碼時,該HAD被設置爲Sweeden,您會被告知該星期的第一天是2 /星期一,瑞典就是這種情況。

這種差異是由於遊樂場默認爲美國本地化的事實。如果你希望遊樂場像在瑞典一樣行事,你必須把它放在代碼中。

+0

+1,謝謝,我認爲我的主要問題是平日是1..7,而不是0..6,這樣會更加自然。 – ragnarius