0

iPhoneクライアントは、AppleのCocoaフレームワークエポック(2001年以降のミリ秒)として日付をJavaサーバーに送信し、Java日付(1970年以降)に変換すると、2011年を1980年として変換し、Cocoa日付に30年を追加します変換された ?または、この変換に使用できる他の方法はありますか?

4

1 に答える 1

6

年を大きくするのではなく、適切な秒数を追加して、秒を Unix エポック時間 (1970 年以降) に調整することをお勧めします。私は肯定的ではありませんが、私の本能は、年自体をぶつけることは場合によっては間違っていることを教えてくれます (閏年やカレンダーへの小さな調整など)。

2001 年 1 月 1 日以降の秒数を加算する必要がある場合、探している数値は +978307200 です。ミリ秒が必要な場合は、1000 を掛けるだけです。

例として、Apple と Unix のエポック日付をエポックからの秒単位で検出し、それらをコンストラクターで Unix エポックからミリ秒経過した Java 日付に変換する必要があるコードがいくつかありました。

// Earlier than 1985 in Unix, must be Apple
if(date < 473410800) {
    m.date = new Date((date + 978307200L) * 1000);
} else {
    m.date = new Date(date * 1000);
}
于 2012-07-26T16:12:38.193 に答える