NSDate
プログラムの実行を測定するために使用しています。最初に のインスタンスを作成NSDate
し、最後に新しいインスタンス endDate を作成して呼び出します。
[startDate timeIntervalSinceDate: endDate]
これは問題なく動作しますが、プログラムが DST の変更前に実行を開始し、変更後に終了するとどうなるか興味があります。startDate は将来であると認識され、timeInterval メソッドは負の値を返しますか?
NSDates は絶対的な時点であり、夏時間やタイム ゾーンの影響を受けないと私は信じています。たとえば、タイム ゾーンの関係で、ニューヨークでは午前 10 時、北京では午後 10 時である可能性がありますが、現在、ニューヨーク市と北京ではまったく同じ時点です。DST から ST への切り替え後 1 分は、時計が 59 分早く表示されていても、以前より 1 分遅くなります。したがって、[NSDate date] を使用して日付を生成すると、常に正しい時間間隔が得られると思います。
デバイスの日付を DST への切り替え (またはオフ) の直前に設定し、切り替え前の開始日と切り替え後の終了日を使用して間隔を記録することでテストできます。
ダレンが示唆したことは真実であるように思われるでしょう。NSDateは、絶対参照日である2001年1月1日00:00GMTからの間隔への参照です。したがって、クラスメソッド[NSDate date]
はその間隔の表現を返します。そのため、日付が将来になるとは考えられません。
これは iPhone だけの問題ではありません。サーバー時間とクライアント時間の観点からこれについて説明するリンクを取得しました。この問題の唯一の回避策は、夏時間を使用しない Maximo アプリケーション サーバーと GUI クライアントの両方の時間帯を選択することです。
これで疑問が解消されることを願っています