9

時刻を午後 9 時に設定した NSDate を使用してローカル通知をスケジュールし、通知のタイムゾーンを UTC/GMT に設定しています。

デバイスのタイムゾーンを UTC (および時刻を午後 8 時 59 分) に設定すると、通知は予想どおり午後 9 時に発生します。

ただし、デバイスのタイムゾーンを米国西海岸に設定し (つまり、シアトル、クパチーノ、または PDT に直接設定するなど)、時刻を午後 1 時 59 分に設定するか、デバイスのタイムゾーンを米国東海岸に設定して時刻を午後 4 時 59 分に設定すると、その場合、通知はそれぞれ午後 2 時または午後 5 時に発生しません。

しかし、UTC の午後 9 時は、現在の夏時間でこの時期の UTC 午後 9 時が東部標準時の午後 5 時と西部標準時の午後 2 時に相当するため、そうすべきだと思っていました。

デバイスのタイムゾーンが PDT のときにデバイスの時刻を午後 8 時 59 分に設定すると、通知のタイムゾーンを UTC/GMT に設定したにもかかわらず、通知は午後 9 時に発生します。PDT の午後 9 時は午後 9 時ではないため、これは正しくありません。 UTC。

したがって、OS は、設定している通知のタイムゾーンを無視しているようです。なぜ期待どおりに機能しないのか、誰か説明がありますか?

ありがとう

4

2 に答える 2

6

timeZoneのプロパティのドキュメントを参照してください UILocalNotification:

... 有効な NSTimeZone オブジェクトをこのプロパティに割り当てた場合、発火日は、タイム ゾーンが変更されたときに自動的に調整される実時間として解釈されます。この場合に適した例は、目覚まし時計です。

したがって、通知に絶対時間が必要な場合は、タイムゾーンを割り当ててはいけないと思います。

于 2012-08-03T20:43:14.097 に答える