Java UTCタイムスタンプのピット
816 ワード
Java UTCタイムスタンプのピット
プロジェクトでは、UTCのタイムスタンプをサーバに渡す必要がある場所があります.ネットワーク上のコードの大部分は次のように変換されます.
実際にcal.gettimeInMillis()から取り出されたミリ秒数は間違っており、異なるタイムゾーンを設定すると、この方法で取り出された値は異なる.正しい方法は
gettimeInMillisは実際にutcミリ秒数を取っているので、タイムゾーンとは関係ありません
参考資料:Java Timezone why different timezone give same value in millisec
プロジェクトでは、UTCのタイムスタンプをサーバに渡す必要がある場所があります.ネットワーク上のコードの大部分は次のように変換されます.
//1、 :
java.util.Calendar cal = java.util.Calendar.getInstance();
//2、 :
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
//3、 :
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
//4、 , UTC :
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
// , cal.get(int x) cal.getTimeInMillis() UTC 。
実際にcal.gettimeInMillis()から取り出されたミリ秒数は間違っており、異なるタイムゾーンを設定すると、この方法で取り出された値は異なる.正しい方法は
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.getTimeInMillis();
gettimeInMillisは実際にutcミリ秒数を取っているので、タイムゾーンとは関係ありません
参考資料:Java Timezone why different timezone give same value in millisec