1

はい、これはiOSプログラミングの質問です。

RMSタイタニック号が100周年に沈んだ正確な時間を計算する必要があります。

It sunk at 15th April 1912 2:20 a.m. 

あなたが言う愚かな質問。100周年は

15th April 1912 2:20 a.m. 
+100 years
15th April 2012 2:20 a.m. 

しかし、私は世界のどのタイムゾーンでも正確にアラームを鳴らし、タイムゾーンを処理する必要があります。英国夏時間は1時間進んでいますが、1918年まで有効になりませんでした。しかし今日の時点で2012年3月25日ロンドンはBSTにあるので、1時間先です。

タイムゾーンで混乱しています。GMTとUTCがあります。船はロンドンより数時間早く49°56'49"W、41°43'32"Nで沈没しました。-49.94822196927015 41.72713826043066

Whats the correct way to enter a historic date into NSCalendar 
and to add 100 years to it exactly and get back the right time 
in the users current timezone?

NSCalendarオプションに日本語とイスラム暦の形式があることに気付きました。iOSデバイスは日付をこれらのカレンダーに変更できますか?そして、これが事実なら。グレゴリオ暦からイスラム教に変換するにはどうすればよいですか?

あなたの週を始めるための素晴らしい脳のパズルゲーム:)

4

1 に答える 1

1

(iOS APIを使用したことがないため、ここにはコードはありません。ただし、日付/時刻APIとそれらが投げかける奇妙なことについてはある程度の経験があるので、とにかくこの回答がお役に立てば幸いです。)

NSCalendarに過去の日付を入力し、それに100年を正確に追加して、ユーザーの現在のタイムゾーンで適切な時刻に戻す正しい方法は何ですか?

それはあなたが「100年」と言う意味に本当に依存します-それは本当に一定の時間であるというわけではありません。

沈んだUTCの瞬間を取得し、ユーザーのローカルタイムゾーンを適用してから、それに100年を追加します。ただし、その場合、結果が実際にはそのタイムゾーンの有効な現地時間ではない可能性があることを考慮する必要があります。

たとえば、沈没の瞬間が午前1時20分だったタイムゾーンにいるとします。しかし、そのタイムゾーンでは、2012年4月15日が時計が変わり、午前1時から午前2時までスキップします。その場合、午前1時20分は発生しません...したがって、適切と思われるものに応じて、午前12時20分、DST移行の直前、DST移行の瞬間、または午前2時20分を選択できる可能性があります。

考慮すべきもう1つの可能性は、その逆です。午前2時から午前1時までのDST遷移であると仮定します。したがって、午前1時20分は実際には2回発生します。その場合はどうしますか?おそらく、アプリで記念日を2回祝うべきではありません。

このあいまいさと不一致の可能性を排除する別のオプションは、ユーザーのタイムゾーンでのUTCからのオフセットが沈下の正確な時刻であったかを計算し、UTC値に100年を追加することです(DST遷移はありません)同じオフセットを再度適用します。

NSCalendarオプションに日本語とイスラム暦の形式があることに気付きました。iOSデバイスは日付をこれらのカレンダーに変更できますか?そして、これが事実なら。グレゴリオ暦からイスラム教に変換するにはどうすればよいですか?

私はその面で知りません、私は恐れています。

于 2012-03-25T16:08:49.933 に答える