Javascript (СРЕДНИЙ стек) — Режим разработки — почему метка времени хранится Node.js показывает время, отличное от времени моего ноутбука

#node.js #angular #datetime

Вопрос:

Пожалуйста, помогите с отображением правильной отметки даты и времени.

Например, Время на моем ноутбуке: 02-Oct-2021 11:14am (это в Индии)

Время , сохраненное Узлом и отображаемое в угловом 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();

 

а вот код в угловом шаблоне.

       <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, который также находится в Индии.

Ответ №1:

Это происходит потому, что MongoDB всегда хранит метку времени в UTC.

Попробуйте код ниже:

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

Для получения дополнительной информации вы также можете ознакомиться с официальным документом MongoDB здесь

Комментарии:

1. Спасибо. Я видел документ MongoDB. Но означает ли это, что каждый раз необходимо сохранять смещение и восстанавливать даты для использования как в узле, так и в угле. В узле — в случае, если необходимо выполнить какие-либо вычисления на основе даты в отношении даты, полученной от Angular. И в Angular каждую дату нужно реконструировать, чтобы она отображалась пользователю? Неужели нет другого выхода?