我使用 Moment.js 和 Moment-Timezone 框架,并且有一个 Moment.js 日期对象,它明确地在 UTC 时区。如何将其转换为浏览器的当前时区?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC");
var localDate = ???
所以如果我能找出用户本地时区就好了;或者,我想将日期对象转换为另一个只使用“本地时区”的数据对象,无论实际是什么。
我使用 Moment.js 和 Moment-Timezone 框架,并且有一个 Moment.js 日期对象,它明确地在 UTC 时区。如何将其转换为浏览器的当前时区?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC");
var localDate = ???
所以如果我能找出用户本地时区就好了;或者,我想将日期对象转换为另一个只使用“本地时区”的数据对象,无论实际是什么。
您不需要为此使用时刻时区。主要的 moment.js 库具有使用 UTC 和本地时区的完整功能。
var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).local();
从那里您可以使用您可能期望的任何功能:
var s = localDate.format("YYYY-MM-DD HH:mm:ss");
var d = localDate.toDate();
// etc...
请注意,通过将testDateUtc
一个moment
对象传递回moment()
构造函数,它会创建一个clone。否则,当您调用 时.local()
,它也会更改testDateUtc
值,而不仅仅是localDate
值。时刻是可变的。
另请注意,如果您的原始输入包含时区偏移量,例如+00:00
或Z
,那么您可以直接使用moment
. 您不需要使用.utc
或.local
。例如:
var localDate = moment("2015-01-30T10:00:00Z");
var dateFormat = 'YYYY-DD-MM HH:mm:ss';
var testDateUtc = moment.utc('2015-01-30 10:00:00');
var localDate = testDateUtc.local();
console.log(localDate.format(dateFormat)); // 2015-30-01 02:00:00
这是我所做的:
var timestamp = moment.unix({{ time }});
var utcOffset = moment().utcOffset();
var local_time = timestamp.add(utcOffset, "minutes");
var dateString = local_time.fromNow();
{{ time }}
UTC 时间戳在哪里。
使用 utcOffset 函数。
var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).utcOffset(10 * 60); //set timezone offset in minutes
console.log(localDate.format()); //2015-01-30T20:00:00+10:00
获取用户时区的最佳方法是使用 moment-timezone
import moment from 'moment-timezone'
const time = moment.tz("2021-04-14T02:08:10.370Z")
const localtz = moment.tz.guess()
const date = time.clone().tz(localtz)
const formatDate = moment(date).format('MMMM Do YYYY, h:mm:ss A z')
console.log(formatDate)
这样您就可以将您的时间转换为本地时区的特定时间