如何将 Moment.js 日期转换为用户本地时区?
我使用 Moment.js 和 Moment-Timezone 框架,并且有一个 Moment.js 日期对象,该对象明确使用 UTC 时区.如何将其转换为浏览器的当前时区?
I use the Moment.js and Moment-Timezone frameworks, and have a Moment.js date object which is explicitly in UTC timezone. How can I convert that to the current timezone of the browser?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC");var localDate = ???
所以如果我能找出用户的本地时区就好了;或者,我想将日期对象转换为另一个只使用本地时区"的数据对象,无论它实际上是什么.
So it would be fine if I could find out the users local time zone; or alternatively I'd like to convert the date object into another data object which just uses the "local timezone", no matter what that actually is.
推荐答案
您不需要为此使用 moment-timezone.主要的 moment.js 库具有使用 UTC 和本地时区的完整功能.
You do not need to use moment-timezone for this. The main moment.js library has full functionality for working with UTC and the local time zone.
var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).local();
从那里您可以使用您可能期望的任何功能:
From there you can use any of the functions you might expect:
var s = localDate.format("YYYY-MM-DD HH:mm:ss");
var d = localDate.toDate();
// etc...
请注意,通过将 testDateUtc
(它是一个 moment
对象)传回 moment()
构造函数,它会创建一个 克隆.否则,当您调用 .local()
时,它也会更改 testDateUtc
值,而不仅仅是 localDate
值.时刻是可变的.
Note that by passing testDateUtc
, which is a moment
object, back into the moment()
constructor, it creates a clone. Otherwise, when you called .local()
, it would also change the testDateUtc
value, instead of just the localDate
value. Moments are mutable.
另外请注意,如果您的原始输入包含时区偏移量,例如 +00:00
或 Z
,那么您可以直接使用 moment 解析它代码>.您不需要使用
.utc
或 .local
.例如:
Also note that if your original input contains a time zone offset such as +00:00
or Z
, then you can just parse it directly with moment
. You don't need to use .utc
or .local
. For example:
var localDate = moment("2015-01-30T10:00:00Z");
相关文章