2017-08-28 1 views
0

J'utilise Oracle DB, type de colonne est: DATE I Plan cette colonne comme ceci:Jackson valeur d'horodatage bizarre utilisé dans momentJS donne mauvaise année

private Date dateCreate; 

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

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

Je ne fais rien d'autre mais juste retourner cette valeur à la l'extrémité avant.

Dans mon frontend je tente de convertir cet horodatage à un objet moment:

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

Je reçois la '12/13/49626' je devrais '08/28/2017'

Lorsque j'utilise un service comme this one et coller mon horodatage (1503908063000), il me donne la bonne date.

Je ne pense pas, que couper les trois derniers chiffres de l'horodatage est une bonne idée. Y a-t-il un autre moyen de le résoudre? J'utilise Hibernate comme fournisseur ORM et Jackson pour JSON (certains services RESTEasy).

Répondre

2

Vous ne devez pas utiliser moment.unix, qui parse secondes depuis l'époque Unix, il suffit d'utiliser moment(Number) que

similaires à new Date(Number), vous pouvez créer un moment en passant une valeur entière représentant le nombre de millisecondes depuis l'époque Unix (1er janvier 1970 12h00 UTC).

Voici un échantillon vivant:

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>

+1

J'ai fait à nouveau les choses comme compliqué. Merci pour la réponse. –