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)