0
私はランダムな日付を使用して前の月曜日を計算するために以下のコードを使用しています。どの作業ファイルが、来年のdate.belowに私のコードブレークが同じのためのコードです:NSCalendarは、翌年の第1週の前週の月曜日が間違った日付を返します
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1483620311.228];
NSLog(@"current date ===> : %@", date);
NSCalendar *calendar;
calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
[calendar setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en-US"]];
NSTimeZone *zone = [NSTimeZone timeZoneWithName:@"Australia/Sydney"];
[calendar setTimeZone:zone];
NSDateComponents *nowComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitWeekday | NSCalendarUnitWeekOfYear | NSCalendarUnitWeekOfMonth | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitTimeZone fromDate:date];
if (nowComponents.weekday == 1) { //If my date fall in sunday then I am moving to previous week.
[nowComponents setWeekOfYear:[nowComponents weekOfYear]-1];
}
[nowComponents setWeekday:2]; //Monday
NSDate *previousMonday = [calendar dateFromComponents:nowComponents];
NSLog(@"previousMonday date ===> : %@", previousMonday);
がログに私のように取得しています:
現在の日付===>:2017-01- 05 12時45分11秒0000
previousMonday日===>:2018年1月1日12時45分11秒0000
私は他のスタックオーバーフローのリソースを見てきましたが、解決策を期待得ていません。
ありがとうございます。それは私のために働く。私のコードが間違った価値をプリントしている理由を知っていますか? – kaushal
私はこの質問に答えるために質問のタイトルを変更する必要があります。質問のタイトルと一致しないためです。 – kaushal
エラーは、ロケールが 'en_US'に設定されている場合にのみ発生します。私はこれをバグと見なします。 – vadian