首页 > 解决方案 > Javascript (MEAN Stack) - 开发模式 - 为什么 Node.js 存储的时间戳与我的笔记本电脑的时间不同

问题描述

请帮助显示正确的日期时间戳。

例如,我的笔记本电脑上的时间02-Oct-2021 11:14am :(这是在印度)

时间由节点存储并显示在 Angular 中2021-10-02T05:44:09.022Z,即比我的时间晚 06:30。这是在本地主机上以开发模式执行的,所以它应该显示我的笔记本电脑的时间,对吗?

这是 Node.js 中的代码,同时保存了一条评论。

  const comment = {
    comment: remarks,
    userName: user.userName,
    commentBy: user.employeeName,
    commentedOn: new Date()
  }

  clientDoc.commentsArr.push(comment)
  await clientDoc.save();

这是Angular模板中的代码。

      <div *ngIf="clientDoc" class="container">
        <span class="subTitle">Existing Comments:</span>
        <table style="width: 100%">
          <tr *ngFor="let e of clientDoc?.commentsArr, let i =index">
            <span style="font-style: italic; font-weight: 500;">{{i + 1}}. {{e.commentBy}} ( {{e.commentedOn}} ) : </span>
            <span *ngIf="account.role !== 'Client'">
              <a class="link small" (click)="onEditRemarks(e._id, e.comment)">Edit</a>
            </span>
            <br>
            <span style="font-weight: 350;">{{e.comment}}</span>
          </tr>
        </table>
      </div>

这是存储在 MongoDb 中的时间戳

2021-10-02T05:44:09.022+00:00

我需要为开发模式以及当我在 VPS 上部署此代码时(也在印度)对此进行排序。

标签: node.jsangulardatetime

解决方案


发生这种情况是因为 MongoDB 始终将时间戳存储在 UTC 中。

试试下面的代码:

var record = db.data.findOne();
var localNow = new Date( record.date.getTime() -  ( record.offset * 60000 ) );

如需更多参考,您还可以在此处查看 MongoDB 官方文档


推荐阅读