将UTC转换为本地时间的Javascript

IT技术 javascript datetime
2021-01-25 02:39:17

好的,假设 JSON 解析字符串 UTC 日期如下:

2012-11-29 17:00:34 UTC

现在,如果我想将此 UTC 日期转换为我的本地时间,我该怎么做?

如何将其格式化为其他格式yyyy-MM-dd HH:mm:ss z

date.toString('yyyy-MM-dd HH:mm:ss z');永远不会解决:/

6个回答

尝试:

var date = new Date('2012-11-29 17:00:34 UTC');
date.toString();
好吧,我试过IE和Firefox,它们都是NAN!失效日期?
2021-03-22 02:39:17
2012/11/29 <--试试这个
2021-04-03 02:39:17
使用 date.js 库这适用于日期格式 yyyy-MM-dd HH:mm:ss
2021-04-05 02:39:17
Date原型上没有返回本地时间而不是 GMT/UTC 的日期对象的方法似乎很愚蠢
2021-04-07 02:39:17
这仅适用于 chrome 浏览器,不适用于 mozilla firefox 和 IE11。您对所有其他浏览器有任何解决方案吗?
2021-04-14 02:39:17
var offset = new Date().getTimezoneOffset();

offset将是从本地时间到 UTC 的时间间隔(以分钟为单位)。要从 UTC 日期获取当地时间,您需要从日期中减去分钟数。

utc_date.setMinutes(utc_date.getMinutes() - offset);
@Surabhi @WebWanderer 的解释说明了为什么+在这里使用是不正确的。从返回getTimezoneOffset()的值是您需要添加到本地时间以获取 UTC 的值因此,如果您想从 UTC 转到本地时间,则操作需要是-. 基本上,这个答案与请求相反,从本地时间转换为 UTC。
2021-03-15 02:39:17
+ 是合适的,因为如果时区晚于 1 小时,返回的值将是 -60。
2021-03-19 02:39:17
我认为这应该是减去偏移量,而不是添加偏移量。
2021-03-22 02:39:17
至少在 chrome 中这是错误的。即使是负时区也会返回正数。
2021-03-23 02:39:17
@OnResolve Surabhi 使用+. 使用时date.getTimezoneOffset“getTimezoneOffset() 的负返回值表示当前位置在 UTC 之前,而正值表示该位置在 UTC 之后。” 科技共和国)。
2021-04-06 02:39:17

要格式化您的日期,请尝试以下功能:

var d = new Date();
var fromatted = d.toLocaleFormat("%d.%m.%Y %H:%M (%a)");

但这样做的缺点是,它是一个非标准功能,在 Chrome 中不起作用,但在 FF 中起作用(afaik)。

克里斯

这是输出 mm/dd/yy 的另一个选项:

const date = new Date('2012-11-29 17:00:34 UTC');
date.toLocaleString();
//output 11/29/2012

上面的解决方案是正确的,但在 FireFox 和 Safari 中可能会崩溃!这就是webility.js试图解决的问题。检查toUTC功能,它适用于大多数主要浏览器,并以 ISO 格式返回时间