我正在开发一个需要与 GAE 上基于 Python 的 REST 服务同步的 iOS 应用程序。
在 python 后端,我创建了这样的时间戳:
def create_timestamp(date):
midnight = datetime.time(0)
date_midnight_time = datetime.datetime.combine(date.date(), midnight)
return calendar.timegm(date_midnight_time.utctimetuple())
我传入上面的函数datetime.datetime.today()
。这将返回 2013 年 10 月 27 日 00:00:00 的值1382832000
。
在 iOS 上有一个内置函数:
nextDate 设置为今天的日期,由于算法有点复杂:
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:date];
[components setDay:27];
NSDate *nextDate = [calendar dateFromComponents:components];
[nextDate timeIntervalSince1970]
返回2013-10-27 00:00:00 BST
值1382828400.000000
不过还是有些出入。
也许是因为 Python 端是 UTC,而 iOS 默认以 BST 显示时间,我需要解决这个问题。截至昨晚,英国夏令时已不复存在,但 iOS 仍报告 BST。这很令人困惑,因为根据我的理解,NSDate 对象总是在 UTC 中......
一旦它工作,将iOS双值转换为int是否安全,以获得类似于Python端的整数?