ホームページ  >  に質問  >  本文

javascript - JS new Date() は、mongodb に保存すると 8 時間早くなります。私たちは東 8 区にいますが、mongodb はグリニッジ時間を節約します。

私は mongoose を使用します。
これは私が定義したスキーマです:

リーリー

これは私が保存したデータです:

リーリー

mongodb に保存した後、保存時間は 8 時間早くなります:

「1995 年 12 月 17 日午前 3 時」は「12 月 16 日午前 7 時」になります。 「今日の夕方です。タイムゾーンが間違っています。この状況ではどうすればよいですか?」 mongodbやmongooseに対応する処理方法はありますか?

よろしくお願いします、兄弟!

我想大声告诉你我想大声告诉你2717日前1647

全員に返信(7)返信します

  • 伊谢尔伦

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

    mongodb は世界的に統一された UTC 時刻を保存していることがわかり、それを読み出した後、時刻を new Date(report.datetime).toLocaleString() に追加して直接保存します。組み込みの Just Date().toLocaleString() が機能します

    返事
    0
  • 漂亮男人

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

    mongoose と sequelize は開始時にタイム ゾーンを考慮しておらず、後で ORM が間違ったタイム ゾーンを取得したためです。解決策は、最新バージョンで解決されているかどうかを確認することです。まだ解決されていない場合は、問題を作成者に送信して、+8 時間かけて書き込み、読み取りを行うだけです。 8.

    返事
    0
  • 滿天的星座

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

    getTimezoneOffset() メソッドは、グリニッジ時間と現地時間の時差を分単位で返します。

    返事
    0
  • 世界只因有你

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

    UNIXタイムスタンプとして保存しておけば、取り出すときはタイムゾーンに合わせて変換処理するだけで問題ありません

    返事
    0
  • PHP中文网

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

    ISO時間を新しい日付に戻すだけです。新しい日付を設定すると、保存されたISO標準時間は自動的にローカルタイムゾーンに変換されます

    返事
    0
  • 我想大声告诉你

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

    上記のクラスメートが言ったように、ISO 形式を使用してください: new Date("2017-03-02T08:00:00+08:00")

    または

    moment.jsの使用

    ご参考までに。

    MongoDB が大好きです!楽しむ!


    返事
    0
  • 世界只因有你

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

    タイムスタンプを保存してみることができます

    返事
    0
  • キャンセル返事