「 NSDate for first day of the month 」で提供されているソリューションを使用して、月の初日を取得しようとしています。
私のコードは NSDate カテゴリにあります:
- (NSDate *)firstDayInMonthOfDate {
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:self];
comps.timeZone = calendar.timeZone;
NSDate *startDate;
[comps setDay:1];
startDate = [calendar dateFromComponents:comps];
return startDate;
}
これにより、前月の最終日が得られます....例:
self = date: 2013-11-02 22:00:00
comps = <NSDateComponents: 0x749b4c0>
TimeZone: Europe/Bucharest (GMT+03:00) offset 10800 (Daylight)
Calendar Year: 2013
Month: 11
Leap month: no
Day: 1
startDate = 2013-10-31 22:00:00 +0000
したがって、正しい日を取得するには、comps.day = 2 を設定する必要があります。余分な 1 がどこから来ているのかわかりません。
[編集]コレクションビューセルに日付を使用したいので、月の最初の日付を取得する信頼できる方法が必要です。2013-11-01
[編集] NSDateFormatter を使用して日付を出力すると、正しい結果 (2013-10-31) が得られます。po と NSLog の問題は、タイムゾーンが正しく解釈されないことです ( 2012-12-31 10pm + 3h GMT != 2013-01-01 12am ) 日付プログラミングのチュートリアルをお勧めします: http://rypress.com /tutorials/objective-c/data-types/dates.html