問題描述
我使用 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");
這篇關于如何將 Moment.js 日期轉換為用戶本地時區?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!