日付から月曜日00:00に戻ろうとしています。これは私のコードです:
func getMonday(myDate: Date) -> Date {
let cal = Calendar.current
let comps = cal.dateComponents([.weekOfYear, .yearForWeekOfYear], from: myDate)
let beginningOfWeek = cal.date(from: comps)!
return beginningOfWeek
}
私の問題は、月曜日の00:00ではなく、土曜日の22:00に返されることです。
例:
let monday1 = getMonday(myDate: date) //date is: 2016-10-04 17:00:00
print(monday1) //Prints: 2016-10-01 22:00:00 (Saturday)
私の質問は:
月曜日00:00から戻る方法はmyDate
?
どうもありがとうございました。
コードは、指定された週の最初の日を返します。これは、ロケールに応じて、日曜日または月曜日(またはおそらく他の日)になります。
月曜日を最初の平日と見なしたい場合は、
cal.firstWeekDay = 2
週の始まりに関係なく、特定の週の月曜日が必要な場合は、次のように設定しcomps.weekday = 2
ます。
func getMonday(myDate: Date) -> Date {
let cal = Calendar.current
var comps = cal.dateComponents([.weekOfYear, .yearForWeekOfYear], from: myDate)
comps.weekday = 2 // Monday
let mondayInWeek = cal.date(from: comps)!
return mondayInWeek
}
印刷はDate
常にGMTタイムゾーンを使用することに注意してください。ローカルタイムゾーンに従って結果を印刷するには、日付フォーマッターが必要です。例:
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm"
let now = Date()
print(df.string(from: now)) // 2016-10-02 20:16
let monday1 = getMonday(myDate: now)
print(df.string(from: monday1)) // 2016-09-26 00:00
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加