Я занимаюсь разработкой веб-службы RESTful с использованием JPA на Servicemix.
Я должен хранить метку времени в формате UTC в базе данных Oracle. Я могу конвертировать дату в UTC, используя различные решения на консоли, но дата хранится только в местном часовом поясе.
Я использовал ниже два решения, которые правильно печатают дату, но вставляют местное время, а не UTC, в базу данных Oracle.
1
public static Date utcDate()
{
Date dt = new Date();
Date utcDate=null;
//Try to format your date with the Z or z timezone flags
SimpleDateFormat dateFormatter = new SimpleDateFormat("MMM/dd/yyyy
HH:mm:ss a Z");
String strUTCDate = dateFormatter.format(dt);
System.out.println("UTC Sting - "+strUTCDate);
try{
utcDate=dateFormatter.parse(strUTCDate);
}catch(ParseException ex){System.out.println("Exception while parsing String date to Date Object.");}
System.out.println("UTC Date Obj - "+utcDate);
System.out.println("System Date - "+dt);
return utcDate;
}
2-
Timestamp.from(LocalDateTime.now().toInstant( ZoneOffset.UTC ) )
Я использую нижеприведенную сущность для сохранения даты в спящем режиме
@Temporal(TemporalType.TIMESTAMP)
@Column(name="LAST_WORKED_ON_DTIME")
private Date LastWorkedOnDtime;
public Date getLastWorkedOnDtime() {
return LastWorkedOnDtime;
}
public void setLastWorkedOnDtime(Date lastWorkedOnDtime) {
LastWorkedOnDtime = lastWorkedOnDtime;
}