我正在尝试将UTC时间转换为本地时间。我一直在看这个例子:http://jsfiddle.net/FLhpq/4/light/。我似乎不能得到正确的本地输出。例如,如果在这里是上午10:30,那么不是10:30,而是15:30。这是我的代码:

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

var localTime  = moment.utc(date).toDate();

localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');

console.log("moment: " + localTime);

无论我做什么,时间都是UTC时间。我住在休斯顿,所以我知道时区是个问题。我遵循了链接中的代码,但似乎可以得到当地时间。我做错了什么?


当前回答

要将UTC时间转换为本地时间,必须使用moment.local()。

要了解更多信息,请参阅文档

例子:

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

console.log(date); // 2015-09-13 03:39:27

var stillUtc = moment.utc(date).toDate();
var local = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');

console.log(local); // 2015-09-13 09:39:27

演示:

Var date = moment.utc().format(); console.log(日期,"-现在UTC"); Var local = moment.utc(date).local().format(); console.log(local, "- UTC now to local"); < script src = " https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js " > < /脚本>

其他回答

将UTC转换为本地时间

let UTC = moment.utc()
let local = moment(UTC).local()

或者你想直接得到当地时间

let local = moment()

var UTC = moment.utc() console.log (UTC.format ());// UTC时间 var cLocal = UTC.local() console.log (cLocal.format ());//转换UTC时间 Var local = moment(); console.log (local.format ());//本地时间 < script src = " https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js " > < /脚本>

要将UTC时间转换为本地时间,必须使用moment.local()。

要了解更多信息,请参阅文档

例子:

var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');

console.log(date); // 2015-09-13 03:39:27

var stillUtc = moment.utc(date).toDate();
var local = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');

console.log(local); // 2015-09-13 09:39:27

演示:

Var date = moment.utc().format(); console.log(日期,"-现在UTC"); Var local = moment.utc(date).local().format(); console.log(local, "- UTC now to local"); < script src = " https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js " > < /脚本>

我为从UTC到本地时间以及从本地时间到UTC的往返编写了这个Codesandbox。您可以更改时区和格式。享受吧!

Codesandbox (DEMO)的完整示例:

https://codesandbox.io/s/momentjs-utc-to-local-roundtrip-foj57?file=/src/App.js

我知道这是一个老问题,但我并没有真正得到我想要的。我有一个UTC日期时间没有时区格式化。所以我必须这样做:

let utcDatetime = '2021-05-31 10:20:00';
let localDatetime = moment(utcDatetime + '+00:00').local().format('YYYY-MM-DD HH:mm:ss');

这对我来说很有效,虽然它需要moment-tz和moment。

Const guess = moment.utc(date).tz(moment.tz.guess()); const correctTimezone = guess.format()