ミリ秒を対応する日付に変換するにはどうすればよいですか?

私は日付に問題があります。

これらのミリ秒数は1317322560000で、2011年9月29日(木)18:56:00 GMT + 02:00のイタリアの日付を表しています。

ただし、Calendarクラスを使用すると、9月29日(木)20:56:00 GMT + 02:00となります。私はこれが起こると思う、夏のスケジュールが効いているから。

ミリ秒を対応する日付に変換するにはどうすればよいですか?

0
あなたはどこに行くのですか?9月29日18:56:00 GMT + 02:00?
追加された 著者 kgautron,
いくつかの回答を受け入れてください。答えが正しい場合は、それを受け入れることができます。
追加された 著者 Matthew Farwell,
System.currentTimeMillis()から
追加された 著者 Gioacchino Del Prete,

2 答え

System.currentTimeMillis() returns "the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC." (i.e. GMT).

あなたが持っている "日付" 1317322560000は、29/09/2011:18:56:00 GMTです。イタリアでは、9月29日にGMTからのオフセットが+2時間です(「夏時間」または技術的にDST = 夏時間)。 30/10/2011:03:00:00(次の日曜日)から、イタリアでは "冬の時間"(DSTなし)になるため、オフセットは+1になります。

だから、あなたは正しくThu Sep 29 20:56:00 CEST 2011(18:56:00 +イタリアのタイムゾーンで2時間オフセット)を取得します。これらすべてのものを表示するこのコードをチェックしてください(Groovyです)。

import java.text.DateFormat
import java.util.TimeZone

println Locale.getDefault()
Date d = new Date(1317322560000)
println d
Locale.setDefault(new Locale("it", "IT"))
println Locale.getDefault()

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
println df.getTimeZone().getOffset(1317322560000) + " => +2h offset in 'summer time' (DST on)"

df.setTimeZone(TimeZone.getTimeZone("GMT+00:00"))
println df.format(d)
df.setTimeZone(TimeZone.getTimeZone("GMT+01:00"))
println df.format(d)
df.setTimeZone(TimeZone.getTimeZone("GMT+02:00"))
println df.format(d)
df.setTimeZone(TimeZone.getTimeZone("Europe/Rome"))
println df.format(d)
println "---"

Date winterDate = new Date(1321382560000)
println winterDate
println df.getTimeZone().getOffset(1321382560000) + " => +1h offset in 'winter time' (DST off)"

この結果:

es_ES
Thu Sep 29 20:56:00 CEST 2011
it_IT
7200000 => +2h offset in 'summer time' (DST on)
giovedì 29 settembre 2011 18.56.00 GMT+00:00
giovedì 29 settembre 2011 19.56.00 GMT+01:00
giovedì 29 settembre 2011 20.56.00 GMT+02:00
giovedì 29 settembre 2011 20.56.00 CEST
---
Tue Nov 15 19:42:40 CET 2011
3600000 => +1h offset in 'winter time' (DST off)
2
追加された
追加された 著者 jalopaba,
タイムゾーンがGMT + 00:00、TZがGMT + 01:00の場合は19:56、TZがGMT + 02:00の場合は20:56が表示されます。あなたのタイムゾーンがGMT + 2の場合、別の結果を得る方法はありません。だから私はあなたが "18時56分"を取得した場合、GMT + 0に設定されたタイムゾーンでコードを実行していたと思います。
追加された 著者 jalopaba,
大丈夫ですが、このデータフォーマットからカレンダーを作成したい場合は、日付を要求すると結果は20.56
追加された 著者 Gioacchino Del Prete,

new Date(1317322560000l)

出力

Thu Sep 29 20:56:00 CEST 2011

あなたのカレンダーと同じです。なぜそれは 18:56 ですか?

0
追加された
どのように記録されましたか?
追加された 著者 kgautron,
これは、新しい日付(System.currentTimeMillis())を18:56に行った場合、20:56と表示されていることを意味します。同じ2時間のギャップがあるかどうか今すぐ試すことができますか?
追加された 著者 kgautron,
はい、結果は変わりません
追加された 著者 Gioacchino Del Prete,
イタリアの18:56に正確に記録されたミリ秒はなぜですか
追加された 著者 Gioacchino Del Prete,
私はSystem.currentTimeMillis()
追加された 著者 Gioacchino Del Prete,
私は今System.currentTimeMillis()を試して、結果は10月28日金曜日11:32:24 GMT + 02:00 2011で、それは大丈夫です!
追加された 著者 Gioacchino Del Prete,
夏時間のないミリ秒GMT +0000で日付を変換できますか?
追加された 著者 Gioacchino Del Prete,
1317322560000ミリ秒はGMT + 0000です。
追加された 著者 Gioacchino Del Prete,