如何将Moment.js的date转换为用户当地时区?
我使用Moment.js和Moment-Timezone框架,并有一个明确在UTC时区的Moment.jsdate对象。 我怎样才能将其转换为浏览器的当前时区?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC"); var localDate = ???
所以如果我能找出用户本地时区就好了; 或者我想将date对象转换为另一个只使用“本地时区”的数据对象,而不pipe实际是什么。
你不需要使用这个时刻。 主要的moment.js库具有与UTC和本地时区一起工作的全部function。
var testDateUtc = moment.utc("2015-01-30 10:00:00"); var localDate = moment(testDateUtc).local();
从那里你可以使用任何你可能期望的function:
var s = localDate.format("YYYY-MM-DD HH:mm:ss"); var d = localDate.toDate(); // etc...
请注意,通过将moment
对象testDateUtc
传回到moment()
构造函数中,它将创build一个克隆 。 否则,当你调用.local()
,它也会改变testDateUtc
值,而不是只改变localDate
值。 时刻是可变的 。
另外请注意,如果您的原始input包含时区偏移(如+00:00
或Z
,则可以直接使用moment
直接parsing它。 您不需要使用.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
- 定义你的date格式。
- 创build一个时刻对象,并在对象上设置UTC标志为true。
- 创build一个从原始时刻对象转换的本地时刻对象。
- 从本地化的时刻对象返回格式化的string。
请参阅: http : //momentjs.com/docs/#/manipulating/local/
使用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