3

ローカル日付 ([NSDate date]) を GMT に変換して、JSON 文字列 (/Date(1324435876019-0000)/) を作成したいと考えています。

タイムゾーンを PST に変更したときにクロックを EST タイムゾーンに設定すると、コードは正常に動作します。コードは引き続き EST として機能します。次のコードの問題点を教えてください。

        NSDate *localDate = [NSDate date];
    NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone] secondsFromGMT]; // You could also use the systemTimeZone method
    NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] - timeZoneOffset;
    NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];
    NSString *time = [NSString stringWithFormat:@"/Date(%@-0000)/", [NSNumber numberWithLongLong:[gmtDate timeIntervalSince1970] * 1000]];
4

2 に答える 2

7

GMTを呼び出すだけでエポック時間を取得できますtimeIntervalSince1970

NSString *time = [NSString stringWithFormat:@"/Date(%lld-0000)/", 
                     (long long)([[NSDate date] timeIntervalSince1970] * 1000)];
于 2011-12-20T22:19:33.823 に答える
0

@joe と @tommy あなたは正しいです。私もあなたが言ったのと同じ方法で実装しました。サーバー データベースに問題がありました。ハックを見つけました。現在のローカル日付に 18000 (5 時間) 秒を追加するだけで、問題ありません。だからコードは

        NSDate *localDate = [NSDate date];
    NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] + 18000;
    NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];

    NSString *time = [NSString stringWithFormat:@"/Date(%@-0000)/", [NSNumber numberWithLongLong:[gmtDate timeIntervalSince1970] * 1000]];
于 2011-12-21T21:52:08.110 に答える