2012-03-25 42 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

相关问题