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 !
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
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.
La méthode
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
.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
.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!
Vous pouvez essayer de sauvegarder l'horodatage