2012-03-25 59 views
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. 

但我想報警準確地熄滅在任何時區的世界,需要處理時區,以及諸如此類英國夏令時間是提前一小時還沒有它沒有生效,直到1918年....但截至今天2012年3月25日倫敦是在BST所以提前一個小時。

我對時區有困惑。我們有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設備可以將日期更改爲這些日曆嗎? 如果是這樣的話。我將如何從格里高利轉換爲伊斯蘭教?你的那一週:)

回答

1

(有沒有代碼在這裏,因爲我從來沒有使用的iOS API

不錯的大腦益智遊戲啓動。不過,我有日期/時間的API的一些經驗和古怪,他們扔了,所以我希望你找到這個答案有用的反正。)

什麼是正確的方式進入一個歷史性的日子到NSCalendar 和100年正好添加到它,並重新回到正確的時間 在用戶的當前時區?

這真的取決於你的意思是「100年」 - 這不是真的是一個固定的時間。

我會採取UTC時刻沉沒,應用用戶的本地時區,然後再添加一百年。但是,您需要考慮結果可能實際上並不是該時區內有效的本地時間。

例如,假設您所處的時區在下沉時間點是上午1點20分......但在該時區中,2012年4月15日是時鐘變化時 - 他們跳過凌晨1點到凌晨2點。在那種情況下,1:20從不會發生......所以你可能會選擇12:20 am,在DST轉換之前的瞬間,DST轉換的瞬間或2:20 am,這取決於你認爲合適的。

另一種考慮的可能性是相反的 - 假設它是從上午2點到上午1點的DST過渡...所以實際上1:20發生在兩次。在這種情況下你想做什麼?你可能不應該讓你的應用程序兩次慶祝週年!

另一個選項,消除歧義的這種可能性和差異是弄清什麼UTC的抵消了用戶的時區是在沉沒的確切時間,然後100兩年中新增的UTC值(這將從來沒有任何DST轉換)並再次應用相同的偏移量。

我注意到在日曆和伊斯蘭日曆格式NSCalendar選項。 iOS設備可以將日期更改爲這些日曆嗎?如果是這樣的話。我將如何從格里高利轉換爲伊斯蘭教?

我不知道那個方面,恐怕。

+0

歡呼聲。是的,不想錯誤 – 2012-03-25 16:45:57

相關問題