Java 在Hibernate中将给定的Datetime转换为时间戳

Java 在Hibernate中将给定的Datetime转换为时间戳,java,hibernate,Java,Hibernate,我正在使用Hibernate。从用户界面中,我得到的日期时间为2019-04-29 19:00:00。相同的值将存储在我的Oracle数据库中,但保存为2019-04-29 07:00:00 在数据库中,开始时间数据类型为时间戳 添加代码段: { "camp_id":292,"camp_name": "Tata","camp_desc":"Tata","camp_type": 1,"camp_start_time":"2019-04-29 19:00:00"} @Entity public

我正在使用Hibernate。从用户界面中,我得到的日期时间为
2019-04-29 19:00:00
。相同的值将存储在我的Oracle数据库中,但保存为
2019-04-29 07:00:00

在数据库中,开始时间数据类型为时间戳

添加代码段:

{ "camp_id":292,"camp_name":
"Tata","camp_desc":"Tata","camp_type": 1,"camp_start_time":"2019-04-29 19:00:00"} 

@Entity public class Campaign_Sms implements Serializable{ 
@Column(name = "CAMP_START_TIME") private Date camp_start_time; } 
使用@Temporal(TemporalType.DATE)注释

@Column
@Temporal(TemporalType.DATE)
private Date camp_start_time;
@Temporal(TemporalType.TIMESTAMP)
private Date camp_start_time;
用它尝试
@Temporal(TemporalType.TIMESTAMP)
注释

@Column
@Temporal(TemporalType.DATE)
private Date camp_start_time;
@Temporal(TemporalType.TIMESTAMP)
private Date camp_start_time;
TemporalType.DATE
注释值省略时间,以及
TemporalType.time
排除日期。检查文档

更新


输出格式应为
yyyyy-MM-dd hh:MM:ss a
,如果需要输出,格式应为
yyy-MM-dd hh:MM:ss

添加代码段:{“营地id”:292,“营地名称”:“塔塔”,“营地描述”:“塔塔”,“营地类型”:1,“营地开始时间”:“2019-04-29 19:00”@Entity public class Campaign_Sms实现了可序列化的{@Column(name=“CAMP_START_TIME”)私有日期CAMP_START_TIME;}感谢sachith的回复。但我仍然无法获得SimpleDataFormat formatter=new SimpleDataFormat(“yyyy-MM-dd hh:MM:ss”);java.util.Date date1=sdf.parse(dt);System.out.println(“在SimpleDataFormat之后--”+date1);字符串pattern=sdf.format(date1);System.out.println(“应用后模式--”+pattrn);O/P:SimpleDateFormat之后——应用模式之后的2019年4月29日星期一19:00:00——2019-04-29 07:00:00如果您正在解析
2019-04-29 19:00:00
,您的输入模式应该是
yyyy-MM-dd HH:MM:ss
。一旦您使用
yyyy-MM-dd hh:MM:ss
(注意简单的
hh
)模式,它将不支持基于
24h
的时间格式,只支持
12h
时间。然后你必须在时间里使用
AM/PM
。所以,为了支持新的输出,格式应该是
yyyy-MM-dd hh:MM:ss a
,并且在更新输入模式yyy-MM-dd hh:MM:ss和TemporalType.TIMESTAMP之后,仍然会将记录保存为2019-04-29 07:00:00 PM
。如果数据库保持这种格式,我想,只要你从数据库中取回你的时间,并且没有任何数据丢失,就不会有问题。我猜您的数据库字段数据类型是DATETIME或其他类型(取决于数据库)。如果是这样的话,只要得到正确的值,就不必担心数据库中的值。只需检查您的程序保存一个获取值是否与插入的值相同。感谢Rajesh的回复。但我仍然无法获取SimpleDateFormat formatter=new SimpleDateFormat(“yyyy-MM-dd hh:MM:ss”);java.util.Date date1=sdf.parse(dt);System.out.println(“在SimpleDataFormat之后--”+date1);字符串pattern=sdf.format(date1);System.out.println(“应用后模式--”+pattrn);O/P:在SimpleDateFormat之后——4月29日星期一19:00:00 IST 2019应用模式之后——2019-04-29 07:00:00