NSDate * now = [NSDate date];
私はこの日付を1時間早く取得します。おそらくそれはUTCを使用しているからです。
システムの現在の日付を取得するにはどうすればよいですか?iPhoneでシステム日付を取得する方法
NSDate * now = [NSDate date];
私はこの日付を1時間早く取得します。おそらくそれはUTCを使用しているからです。
システムの現在の日付を取得するにはどうすればよいですか?iPhoneでシステム日付を取得する方法
[NSDate date]
は現在の日付を返します。ただし、NSDate
には独自のタイムゾーンはありません。時間軸は絶対的なものです。タイムゾーンは、日付を文字列として表示するか、日付コンポーネント(曜日、月、時など)に変換する場合にのみ発生します。
NSDateFormatter
を使用して、現在のタイムゾーンの日付の文字列表現を取得するか、または日付フォーマッタのsetTimeZone:
を使用して別のものを指定します。単にNSLog
を使用すると、日付はUTCのタイムゾーンで表示されます(日付オブジェクトにdescription
を暗黙的に呼び出して)。
NSCalendar
メソッドcomponents:fromDate:
を使用して、「この2つの日付はこのタイムゾーンで同じ日になりますか?」などの一般的な比較の日付から個々のコンポーネント(特定のタイムゾーン)を抽出します。
あなたのシステムを設定する必要がありますGMTの時間と日付がこれはあなたを助けるでしょう。
私は日付を比較する必要があるので、私は日付が必要な文字列を必要としません(iPhoneと同じです)。 iPhoneの場合、バー時間は10:30ですが、[NSdate date]と呼ぶと09:30になります。 – 1110
「NSDate」は、あなたが考えているように、カレンダーの日付ではなく「特定の時点」です。指定されたタイムゾーンに対して日、月、時などのようなものを取得するには、 'NSCalendar'メソッド[' components:fromDate: '](http://developer.apple.com/library/ios/documentation/Cocoa/リファレンス/ファンデーション/クラス/ NSCalendar_Class/Reference/NSCalendar.html#// apple_ref/occ/instm/NSCalendar/components:fromDate :)詳細については、[この記事](http://oleb.net/blog/2011/11/working-with-date-and-time-in-cocoa-part-1/)を参照してください。ココア。 – omz