我使用Moment.js和Moment-Timezone框架,并具有一个明确位于UTC时区的Moment.js日期对象。如何将其转换为浏览器的当前时区?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC");
var localDate = ???
因此,如果我能找到用户的本地时区,那就太好了;或者,我想将日期对象转换为仅使用“本地时区”的另一个数据对象,无论实际上是什么。
Answers:
您无需为此使用moment-timezone。main 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");
local
确实考虑了DST。
EST
转换CET
,如果您想要NY
->的话,明天再举一个例子Madrid
。我会接受反例:)
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
使用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
库更安全