iPhone开发人员:使用unix时间?

iPhone开发人员:使用unix时间?,iphone,unix,Iphone,Unix,实际上,我正在使用fbconnect,我正在尝试获得一个代表一个月前的unix时间。从1970年开始我就对这件事感到困惑。因为有人给了我一个指向正确方向的点?时间“0”是1970年1月1日的午夜。从那以后,每一秒都会增加一秒;我现在写这篇文章的时候是: >>> import time >>> time.time() 1257023557.94208 大多数系统使用Unix epoch进行通信,因为它简单、事实上是标准的,并且允许整数运算。您可以从NSDate

实际上,我正在使用fbconnect,我正在尝试获得一个代表一个月前的unix时间。从1970年开始我就对这件事感到困惑。因为有人给了我一个指向正确方向的点?

时间“0”是1970年1月1日的午夜。从那以后,每一秒都会增加一秒;我现在写这篇文章的时候是:

>>> import time
>>> time.time()
1257023557.94208
大多数系统使用Unix epoch进行通信,因为它简单、事实上是标准的,并且允许整数运算。您可以从
NSDate
获取表示自历元以来持续时间的
NSTimeInterval
,如下所示:

NSTimeInterval timestamp = [[NSDate date] timeIntervalSince1970];
NSTimeInterval只是一个双精度值。如果您想要一个整数——我想fbconnect需要它——只需将其转换(未测试):

记住,这只是一个计数。你可以用3600减去一小时(60*60),用86400加一天(24*60*60),以此类推;但是,在您的情况下,最好从表示所需特定时间的NSDate开始,并允许库为您执行算术


NSDate
可能只是这些时间戳的包装。

1970年的哪一部分让您感到困惑?对不起,我基本上对如何表示1970年以来的时间或计算时间感到困惑,但我的问题已经得到了回答。请注意,夏令时、闰秒、,等等。在这些边缘情况下,简单地增加和减少秒数是有问题的。如果你的应用程序不依赖它们,那就太好了,但如果它需要正确处理它们,建议使用一个处理它们的库。然而,一旦你在执行日历算术时超过了天,事情就会变得复杂得多(每月不同的天、闰年、时区、夏令时)。使用库例程计算上个月是什么时候。@ceejayoz:不,不是。Unix时间戳从来没有考虑过它们,所以同一个Unix时间戳所代表的“实时”有多次(最后一次是在2006年,IIRC?)。夏令时也根本不包括在Unix时间戳中,因为它们与时区无关(它们是从一个时间算起的秒,仅此而已)。因此,我提出的算法在任何情况下都适用于Unix时间戳。@Jed Smith:您是对的,Unix时间没有考虑闰秒或时区偏移,但这意味着如果OP想要考虑这些事情,那么库是个好主意。一个月前通常是相当容易的——只要你能在3月31日或30日,或非闰年的3月29日的一个月前达成一致。只要您不需要周日02:00-03:00之间的时间,当地时间在冬季和夏季(标准和夏令时)之间切换。等等@Jonathan:所以他得到了“一个月前”的
NSDate
,并在上面调用了
timeIntervalSince1970
。。。
NSString *strtimestamp = [NSString stringWithFormat:"%u", [timestamp unsignedIntegerValue]];