.getDay() 在将日期转换为特定时区时不起作用

Posted

技术标签:

【中文标题】.getDay() 在将日期转换为特定时区时不起作用【英文标题】:.getDay() is not working while converting date to Particular timezone 【发布时间】:2020-11-11 21:33:48 【问题描述】:

下面是我的代码:

var date = new Date().toLocaleString("en-US",  timeZone: "Asia/Kolkata" );
var n = date.getDay();

正在尝试将数据转换为 IST。

没有.toLocaleString .getday 工作正常。但是使用时出现以下错误:

类型错误:date.getDay 不是函数 在对象。 (D:\Learning\node-course\web-server\src\app.js:12:14) 在 Module._compile (internal/modules/cjs/loader.js:1200`在此处输入代码`:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10) 在 Module.load (internal/modules/cjs/loader.js:1049:32) 在 Function.Module._load (internal/modules/cjs/loader.js:937:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) 在内部/main/run_main_module.js:17:47

有没有更好的方法将日期转换为 IST 并找到日期?

【问题讨论】:

【参考方案1】:

toLocaleString 的返回值是一个字符串。字符串没有getDay 方法。

javascriptDate 对象没有让您使用其他时区的功能。它仅支持 UTC 和代码运行的当前时区(同时,通过提供一些以 UTC 为您提供信息的方法和其他以本地时区为您提供信息的方法)。 (有 a proposal 可以解决这个问题,但它仍然只在第 2 阶段。)

如果您想知道用户当前时区是哪一天,只需在您的日期对象上直接使用getDay。如果您想要不同的时区,则需要一个维护良好且支持多个时区的库。

【讨论】:

【参考方案2】:

因为它转换成字符串,而字符串没有getDay()功能,你可以试试,

var dateString = new Date().toLocaleString("en-US",  timeZone: "Asia/Kolkata" );
var date = new Date(dateString);
var n = date.getDay();

console.log("Date String: ", dateString);
console.log("Day:", n);

【讨论】:

感谢@turivishal 的解释和解决方案,它奏效了!

以上是关于.getDay() 在将日期转换为特定时区时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MQ 的 esql 将日期的特定时区转换为 GMT 时区?

将 UTC 中的 SQL Server 日期时间转换为特定时区

Redshift:将时间戳转换为特定时区的日期

如何将日期时间(在特定时区)转换为纪元秒

将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题

将特定时区中的日期转换为 Python 中的时间戳