5

次のコードスニペットを実行します。

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 
[comp setDay:1]; 

NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];

firstDayOfMonthDateの値は=30-4-2011ですが、除外されるのは1-5-2011です。つまり、指定された日付の最初の月の日付が必要です。しかし、それは私に前月の最後の日付を与えます。

前もって感謝します。

4

1 に答える 1

10

追加

[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

NSCalendarを初期化した後。

[NSDate date]はUTCタイムゾーンの日付を返します。これは、2001年1月1日00:00 GMTからの絶対間隔ですが、NSCalendarのtimeZoneは、UTCではない可能性のあるデフォルトのタイムゾーンに設定されています。

UTCは、ウィキペディアからの引用であるUTCと「同じ」です。

カジュアルな使用では、1秒未満が重要でない場合、グリニッジ標準時(GMT)はUTCまたはUT1と同等と見なすことができます。「GMT」と言うことは、非公式またはカジュアルなコンテキストで使用される場合、UTCまたはUT1のいずれかを意味することがよくあります。技術的な文脈では、「GMT」の使用は避けられます。明確な用語「UTC」または「UT1」が推奨されます。[3]

于 2011-05-07T11:13:22.267 に答える