1

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

ただし、多少の食い違いがあります。

  1. おそらく、その Python 側は UTC であり、iOS はデフォルトで BST で時刻を表示するため、それに対処する必要があります。昨夜の時点で英国の夏時間は終了しましたが、iOS はまだ BST を報告しています。私の理解では、NSDateオブジェクトは常にUTCであるため、混乱します....

  2. 動作したら、Python 側と同様の丸め整数を取得するために、iOS の double 値を int にキャストしても安全ですか?

4

1 に答える 1