2011-10-28 6 views
0

날짜에 문제가 있습니다.어떻게 밀리 초를 해당 날짜로 변환 할 수 있습니까?

이 밀리 초 1317322560000은 이탈리아에서 9 월 29 일 목요일 18:56:00 GMT + 02 : 00 일자를 나타냅니다.

그러나 Calendar 클래스를 사용하는 날짜는 9 월 29 일 목요일 20:56:00 GMT + 02 : 00입니다. 나는 이것이 여름 스케줄이 유효하기 때문에 일어난다 고 생각한다.

어떻게 밀리 초를 해당 날짜로 변환 할 수 있습니까?

+0

어디 디 당신이 목 9월 29일 그리니치 표준시 18시 56분 0초 + 02 수 :에서 00? – kgautron

+0

From System.currentTimeMillis() –

+0

답변을 수락하십시오. 대답이 맞으면 받아 들일 수 있습니다. –

답변

2

System.currentTimeMillis() "UTC 1970 년 1 월 1 일 현재 시간과 자정 사이의 밀리 초 단위로 측정 한 차이"를 반환합니다. (GMT).

"날짜"가 1317322560000이므로 29/09/2011 : 18 : 56 : 00 GMT입니다. 이탈리아의 경우 9 월 29 일에 GMT로부터의 오프셋은 +2 시간입니다 ("여름철"또는 기술적으로 DST = Daylight Saving Time으로 인해). 30/10/2011 : 03 : 00 : 00 (다음 주 일요일)부터 이탈리아에서는 겨울철 (DST 없음)이므로 오프셋은 +1이됩니다.

따라서 2011 년 9 월 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) 
+0

또한 확인하실 수 있습니다 http://stackoverflow.com/questions/308683/how-can-i-get-the-current-date-and-time-in-utc-or-gmt-in-java – jalopaba

+0

괜찮습니다, 하지만이 데이터 형식에서 달력을 만들려면 날짜를 요청할 때 결과는 20.56 –

+0

입니다. TZ가 GMT + 01 : 00 인 경우 시간대가 GMT + 00 : 00, 19:56 인 경우 18:56이 표시됩니다 TZ가 GMT + 02 : 00 인 경우 20:56입니다. 이는 귀하의 경우입니다. 귀하의 시간대가 GMT + 2 인 경우 다른 결과를 얻는 방법은 없습니다. 그래서 "18:56"을 얻었을 때 GMT + 0으로 설정된 시간대로 코드를 실행하고 있었다고 생각합니다. – jalopaba

0

new Date(1317322560000l)

출력 캘린더 동일

Thu Sep 29 20:56:00 CEST 2011

. 왜 18:56일까요?

+0

예, 결과는 변경되지 않습니다 –

+0

정확히 밀리 세컨드가 이탈리아에서 정확히 18:56에 기록 된 이유 –

+0

기록 된 방법은 무엇입니까? – kgautron

관련 문제