2014-10-10 7 views
0

내가 읽은 것부터 JPA에서 날짜를 처리 할 때 선택할 수있는 3 가지 유형의 TemporalTypes가 있습니다. 그들은 : JPA의 일시적 유형 오전/오후 느림

DATE 
      Map as java.sql.Date 
TIME 
      Map as java.sql.Time 
TIMESTAMP 
      Map as java.sql.Timestamp 

내가 TIMESTAMP를 사용하는 예로서, 그렇게처럼 내 날짜를 지속 : 2014-10-10 02:12:39 그래도 나타났습니다 무엇

, 내 날짜와 AM/PM을 상실하고 있다는 점이다. 내 날짜가 문자열 2014-10-10 02:12:39 PM으로 들어 왔다고 가정하면 2014-10-10 02:12:39으로 저장됩니다. 내 날짜 형식이 MMM dd, yyyy HH:mm:ss a이므로 PM 대신 AM이 될 것입니다.

AM/PM 정보를 데이터베이스에 유지하려면 어떤 TemporalType을 사용해야합니까?

+1

'java.util.Date' (이 3 개의 java.sql 클래스 모두의 부모)는 단지 epoch 이후 통과 한 밀리 초 수를 포함하는 long에 대한 래퍼입니다 ('1970-01-01 00 : 00 : 00'). Timestamp는 AM/PM 정보를 전혀 저장하지 않으며 아마도 AM을 나타냅니다. 데이터베이스의 설정을 변경하거나 출력 날짜를'hh' (01-12) 대신'HH' (00-23)을 제공하는 형식으로 지정할 필요가있을 것입니다. –

+0

그냥 코멘트입니다. * ... 내 날짜 형식이 'MMM dd, yyyy HH : mm : ss a'입니다. *'HH '는 시간대 (0-23)이므로 AM/PM은 그렇지 않습니다. 그 형식으로 의미가 있습니다. 그것이 'hh'(am/pm 1-12 시간) 인 경우에는 의미가 있습니다. – dic19

+1

와우, 나 자신을 보았다. 저를 'hh'로 바꾸어서 차이가 있는지 확인하십시오. – user489041

답변

1

AM/PM/24H 그냥 날짜의 형식입니다 :

당신은 단순히 형식 시간/날짜 당신이 그것을 원하는 방식으로해야합니다. Date, Calendar 등에서 01.01.1970 00:00:00부터 밀리 초를 포함하는 long으로 날짜를 저장합니다.

@Temporal(TemporalType.TIMESTAMP) 
privete Calendar lastUpdated; 

이 요약 : 내가 JPA 엔티티에 날짜를 저장할 때

나는 보통 Calendar 인터페이스를 사용합니다 (HH 유지되는 : MM : SS 정보) TemporalType.TIMESTAMP으로 필드에 주석을 사용하면 AM을 보존 할 수/PM 정보는 로케일에 따라 다르므로 데이터베이스에 저장하십시오. 예를 들어, 우리 나라에서는 12H + AM/PM을 사용하면서 24H 형식의 날짜를 사용합니다. 날짜를 올바르게 표시하려면 사용자의 로켈에 해당하는 형식을 사용해야합니다.