运行 Date().toLocaleString() 在本地机器上给我当地时间,但在服务器上给我 UTC

Running Date().toLocaleString() gives me local time on local machine but UTC on server

所以我从 Date().toLocaleString() 获取本地当前日期和时间。当我在浏览器中 运行 或在本地点击 API 时,它会在 IST 中为我提供日期和时间(因为我来自印度)。但是当我将它部署到服务器时,我得到的时间被更改为UTC。正常吗?如果是这样,如何每次都获得IST?

我的代码:

 let currentDate = new Date().toLocaleString();
 console.log(currentDate);

toLocaleString() 方法returns 一个带有此日期的语言敏感表示的字符串。新的 locales 和 options 参数让应用程序指定应该使用其格式约定的语言并自定义函数的行为。在忽略语言环境和选项参数的旧实现中,使用的语言环境和返回的字符串的形式完全取决于实现。

示例:

var event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// British English uses day-month-year order and 24-hour time without AM/PM
console.log(event.toLocaleString('en-GB', { timeZone: 'UTC' }));
// expected output: 20/12/2012, 03:00:00

// Korean uses year-month-day order and 12-hour time with AM/PM
console.log(event.toLocaleString('ko-KR', { timeZone: 'UTC' }));
// expected output: 2012. 12. 20. 오전 3:00:00
You are not passing the location parameter to toLocaleString, so the current location will be used. You see a different output on your machine vs. remote server because they are physically located in different countries.

您没有将位置参数传递给 toLocaleString,因此将使用当前位置。你在你的机器和远程服务器上看到不同的输出,因为它们位于不同的国家。

选项 1:

env TZ='Asia/Kolkata' node server.js

选项 2:

process.env.TZ = 'Asia/Kolkata' 

方案三(推荐): 使用这个 this module

const momentTZ = require('moment-timezone');
console.log(momentTZ().tz('Asia/Kolkata').toISOString());