문제로 어려움을 겪고 있습니다. 조사하고 디버깅할수록 더 완벽하게 이해할 수도 있습니다.DST 중 타임 스탬프 생성 문제 (다소)
내 시간대는 ET (UTC -5)입니다. 시간은 21:00에서 21:59 사이입니다. 날짜는 2014 년 3 월 8 일입니다.이 시간대에서 DST는 2014 년 3 월 9 일 1:59:59가 3:00:00이되는 시점에 발생합니다.
최대 절전 모드 DB에서 현재 날짜 시간을 Timestamp
으로 유지하고 싶습니다. 이를 위해 Jadira의 PersistentDateTime 클래스를 사용합니다. 나는 UTC 값을 유지하므로 Jadira는 현재 날짜 시간을 변경합니다 (2014 년 3 월 8 일 21:30 동부 표준시). 2014 년 3 월 9 일 02:30 UTC가 올바른 것입니다. 그런 다음 UTC 날짜 시간의 문자열 표현에서 Timestamp
을 만들고 Timestamp
은 09-MAR-14 03.30.00.000000000 AM
입니다. ET 표현으로 돌아 가면 2014 년 3 월 8 일 22:30 동부 표준시에 도착합니다.
내가 이해하는 한, 이것은 틀린 것입니다 - 동일한 날짜 시간을 가져야합니다.
Timestamp
을 만들 때 DST가 적용되는 것처럼 보입니다. 하나의 세부 사항을 고려하고 있습니다 : ET는 UTC -5입니다. 21:00은 ET에서 DST가 5 시간을 뺀 시간입니다. 따라서 21:30 동부 표준시는 2:30 UTC입니다. 2:30은 3 월 8 일 동부 표준시에서 무효입니다. 아마도 이것은 이상한 행동과 관련이 있습니다.
jadira 1.9 (usertype.joda-time-1.9.jar 및 usertype.spi-1.9.jar)와 Hibernate 3.6.0을 사용하고 있습니다. 내 모델은 다음과 같습니다
@Entity
@Table(name = RUN_STATUS_DATA_DB_TABLE_NAME)
@Access(AccessType.PROPERTY)
public class StatusData implements Identifiable, Serializable {
...
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
@Column(name = RUN_STATUS_COLUMN_POST_EXECUTION_END_TIME)
public DateTime getPostExecutionEndTime() {
return postExecutionEndTime;
}
public void setPostExecutionEndTime(DateTime postExecutionEndTime) {
this.postExecutionEndTime = postExecutionEndTime;
}
}
라인 (72)
에서 예상치 못한 타임 스탬프 this class에 왜 이런 일이에 대한 모든 생각을 작성하는 Jadira 코드? 감사합니다.
일부 용어 수정 : ET = (EST * 및 * EDT). EST = -5, EDT = -4. 하지만 그 이유는 타임 스탬프가 2시 30 분 UTC 대신 3시 30 분 UTC에 있었던 이유를 설명하지 않습니다. ** 코드 **를 보여주십시오. 그렇지 않으면 더 이상 당신을 도울 수 없습니다. –
Jadira의 어떤 버전을 사용하고 있습니까? –
요청한 세부 정보를 포함하도록 질문을 편집했습니다. – sebi