2016-09-19 7 views
1

componentyear,week、およびdayOfWeekから日付を取得しようとしていますが、上記の関数から奇妙な日付が取得されています。ここで私は何をすべきかです:NSCalendar.dateFromComponentsから奇妙な日付を取得

let calendar = NSCalendar(identifier: NSCalendarIdentifierISO8601) 
let components = NSDateComponents() 
components.weekday = 1 
components.weekOfYear = 16 
components.yearForWeekOfYear = 2016 
let dateKW = calendar?.dateFromComponents(components) 

私は2にweekdayを変更すると、変数dateKW 4月2016 24に等しく、私は4月2016 18を取得し、なぜそうではありますか?最初の日は17日ではありませんか?2016年4月17日?

答えて

3

グレゴリオ暦では、平日の単位は1=Sunday2=Monday、...から7=Saturdayになります。あなたのロケールでの最初の曜日が月曜日の(たとえばドイツの場合)の場合、1816(1816年4月24日(日曜日))の2016年の第12週の が範囲です。

。したがって週#で日曜日を求めて16

components.weekday = 1 
components.weekOfYear = 16 
components.yearForWeekOfYear = 2016 

あなたはその 週の最初の日は、単に

components.weekday = calendar.firstWeekday 

かを設定する必要がある場合は、正しく4月24日、2016年を返しますドン」 tをcomponents.weekdayに設定します。

+0

オハイオ州オハイオ州オハイオ州それでそれは1 =日曜日といっしょにエナムのようです。7 =土曜日にちょっと、今、私はそれを感謝します。私は平日、weekofyear、および年のデータを別のソースから取得しており、それらを適切な日として表示する必要があります。そして、はい、私はドイツにいます。私の解決策は今、私の平日に1を加え、幸いにもそれは私のために正しい日を返すようです。 – Adarkas2302