首页 > 解决方案 > 在nodejs中将服务器时间转换为任何给定的本地时间

问题描述

这是我在我的服务器端 nodejs 中运行的用于转换的代码。

convertNowToTimezone = (localOffset) => {
  let d = new Date();
  let millis = d.getTime() + (d.getTimezoneOffset() * 60000); //convert server local time to UTC millisec
  d.setTime(millis - (localOffset * 60000)); //convert UTC millisec to required local time
  return d;
}

localOffset 是 -330(IST 偏移量),这给出了 4 分钟的差异。

如何正确处理这件事?

标签: javascriptnode.jsserverutctimezone-offset

解决方案


我建议使用moment在 javascript 中处理日期。

您可以使用moment-timezone轻松管理时区

const moment = require('moment-timezone');

moment().tz("UTC").format();
moment().tz("America/Los_Angeles").format();

console.log(moment().tz("UTC").format());
console.log(moment().tz("America/Los_Angeles").format());
<script src="https://momentjs.com/downloads/moment.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script>

localOffset 是 -330(IST 偏移量),这给出了 4 分钟的差异。

检查您的服务器时间是否同步。如果您使用的是 linux 服务器,则可以使用ntp 。


推荐阅读