在momentJS中使用的杰克逊奇怪的时间戳值给出了错误的一年

时间:2017-08-28 12:23:07

标签: java oracle date momentjs

我使用的是Oracle DB,列类型为:DATE 我按照以下方式映射此列:

private Date dateCreate;

@Column(name = "DATE_CREATE", nullable = false)
public Date getDateCreate() {
    return dateCreate;
}

public void setDateCreate(Date dateCreate) {
    this.dateCreate = dateCreate;
}

除了将此值返回到前端之外,我什么都不做。

在我的前端,我尝试将此时间戳转换为时刻对象:

let momentDate = moment.unix(dateCreate).format("MM/DD/YYYY");

我得到'12/13/49626' 我应该得到'08/28/2017'

当我使用this one之类的服务并将时间戳(1503908063000)粘贴到其中时,它会为我提供正确的日期。

我不认为,从时间戳中删除最后三个数字是一个好主意。还有另一种解决方法吗?

我使用Hibernate作为ORM提供程序,使用Jackson作为JSON(一些RESTEasy服务)。

1 个答案:

答案 0 :(得分:2)

您不必使用moment.unix,解析自Unix时代以来,只需使用moment(Number)

  

new Date(Number)类似,您可以通过传递一个整数值来创建片刻,该值表示自Unix Epoch(1970年1月1日12 AM UTC)以来毫秒的数量。

这是一个实时样本:



let dateCreate = 1503908063000;
let ggg = moment(dateCreate).format("MM/DD/YYYY");
console.log(ggg);

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;