2017-02-25 60 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