How to convert Moment.js date to users local timezone?
我使用Moment.js和Moment-Timezone框架,并且有一个Moment.js日期对象,该对象明确地在UTC时区中。 如何将其转换为浏览器的当前时区?
var localDate = ???
如果我能找到用户的本地时区就好了; 或者我想将日期对象转换为另一个只使用"本地时区"的数据对象,无论实际是什么。
您不需要为此使用时刻时区。主要的moment.js库具有使用UTC和本地时区的全部功能。
1 2 | var testDateUtc = moment.utc("2015-01-30 10:00:00"); var localDate = moment(testDateUtc).local(); |
从那里,您可以使用您可能期望的任何功能:
1 2 3 | var s = localDate.format("YYYY-MM-DD HH:mm:ss"); var d = localDate.toDate(); // etc... |
请注意,通过将
另请注意,如果原始输入包含时区偏移量(例如
1 | var localDate = moment("2015-01-30T10:00:00Z"); |
1 2 3 4 | 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 |
宾语。
请参阅:http://momentjs.com/docs/#/manipulating/local/
这是我做的:
1 2 3 4 | var timestamp = moment.unix({{ time }}); var utcOffset = moment().utcOffset(); var local_time = timestamp.add(utcOffset,"minutes"); var dateString = local_time.fromNow(); |
其中
使用utcOffset函数。
1 2 3 | 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 |