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であるため、混乱します....
動作したら、Python 側と同様の丸め整数を取得するために、iOS の double 値を int にキャストしても安全ですか?