2012-01-20 13 views
2
NSDate * now = [NSDate date]; 

私はこの日付を1時間早く取得します。おそらくそれはUTCを使用しているからです。
システムの現在の日付を取得するにはどうすればよいですか?iPhoneでシステム日付を取得する方法

答えて

3

[NSDate date]は現在の日付を返します。ただし、NSDateには独自のタイムゾーンはありません。時間軸は絶対的なものです。タイムゾーンは、日付を文字列として表示するか、日付コンポーネント(曜日、月、時など)に変換する場合にのみ発生します。

NSDateFormatterを使用して、現在のタイムゾーンの日付の文字列表現を取得するか、または日付フォーマッタのsetTimeZone:を使用して別のものを指定します。単にNSLogを使用すると、日付はUTCのタイムゾーンで表示されます(日付オブジェクトにdescriptionを暗黙的に呼び出して)。

NSCalendarメソッドcomponents:fromDate:を使用して、「この2つの日付はこのタイムゾーンで同じ日になりますか?」などの一般的な比較の日付から個々のコンポーネント(特定のタイムゾーン)を抽出します。

+0

私は日付を比較する必要があるので、私は日付が必要な文字列を必要としません(iPhoneと同じです)。 iPhoneの場合、バー時間は10:30ですが、[NSdate date]と呼ぶと09:30になります。 – 1110

+0

「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

0

あなたのシステムを設定する必要がありますGMTの時間と日付がこれはあなたを助けるでしょう。

関連する問題