Maison  >  Questions et réponses  >  le corps du texte

javascript - JS new Date() sera 8 heures plus tôt lorsqu'il sera enregistré dans mongodb. Nous sommes dans le huitième district est et mongodb fait gagner l'heure de Greenwich.

J'utilise mangouste,
Voici le schéma que j'ai défini :

const report = mongoose.Schema({
    datetime: Date,
    username: String,
    detail: mongoose.Schema.Types.Mixed
})

Voici les données que j'ai enregistrées :

let params = {
    username: 'testadmin',
    detail: '23123',
    datetime: new Date('December 17, 1995 03:24:00')
}

L'heure enregistrée dans mongodb sera huit heures plus tôt :

'3h00 du matin le 17 décembre 1995' devient '19h00 le 16 décembre, le fuseau horaire est incorrect,,, S'il vous plaît, dites-moi quoi. devriez-vous faire dans cette situation? Existe-t-il une méthode de traitement correspondante dans mongodb ou mongoose ?

Merci d'avance, mon frère !

我想大声告诉你我想大声告诉你2715 Il y a quelques jours1644

répondre à tous(7)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-06-05 11:10:46

    Il s'avère que mongodb stocke l'heure UTC, qui est globalement unifiée. Ensuite, enregistrez-la directement. Après l'avoir lu, mettez l'heure new Date(report.datetime).toLocaleString() et. appelez js Juste le Date().toLocaleString() intégré fera l'affaire

    répondre
    0
  • 漂亮男人

    漂亮男人2017-06-05 11:10:46

    Parce que mangouste et sequelize n'ont pas pris en compte le fuseau horaire lorsqu'ils ont commencé, et l'ORM s'est trompé de fuseau horaire plus tard. La solution est de voir s'il est résolu dans la dernière version. S'il n'est pas encore résolu, vous pouvez essayer d'envoyer le problème à l'auteur. Vous ne pouvez ensuite le prétraiter que vous-même au niveau de l'application, en écrivant +8 heures et en lisant -. 8.

    répondre
    0
  • 滿天的星座

    滿天的星座2017-06-05 11:10:46

    La méthode

    getTimezoneOffset() renvoie le décalage horaire entre l'heure moyenne de Greenwich et l'heure locale, en minutes.

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-05 11:10:46

    Enregistrez-le sous un horodatage Unix, afin qu'il n'y ait aucun problème lorsque vous le supprimez, traitez simplement la conversion en fonction du fuseau horaire

    .

    répondre
    0
  • PHP中文网

    PHP中文网2017-06-05 11:10:46

    Il vous suffit de remettre l'heure iso dans la nouvelle date. Ce qui est enregistré est l'heure standard iso. Lorsque la nouvelle date est définie, elle sera automatiquement convertie dans le fuseau horaire local

    .

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-05 11:10:46

    Comme certains étudiants l'ont dit ci-dessus, utilisez le format ISO : new Date("2017-03-02T08:00:00+08:00")

    ou

    Utilisation de moment.js

    Pour référence.

    J'adore MongoDB ! Amusez-vous!


    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-05 11:10:46

    Vous pouvez essayer de sauvegarder l'horodatage

    répondre
    0
  • Annulerrépondre