oli*_*ver 67 javascript timezone date momentjs
我使用Moment.js和Moment-Timezone框架,并且有一个Moment.js日期对象,该对象明确地在UTC时区中.如何将其转换为浏览器的当前时区?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC");
var localDate = ???
如果我能找到用户的本地时区就好了; 或者我想将日期对象转换为另一个只使用"本地时区"的数据对象,无论实际是什么.
Mat*_*int 118
您不需要为此使用时刻时区.主要的moment.js库具有使用UTC和本地时区的全部功能.
var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).local();
Run Code Online (Sandbox Code Playgroud)
从那里,您可以使用您可能期望的任何功能:
var s = localDate.format("YYYY-MM-DD HH:mm:ss");
var d = localDate.toDate();
// etc...
Run Code Online (Sandbox Code Playgroud)
需要注意的是通过传递testDateUtc
,这是一个moment
对象,回到moment()
构造函数,它创建了一个克隆.否则,当您调用时.local()
,它也会更改testDateUtc
值,而不仅仅是localDate
值.时刻是可变的.
另请注意,如果您的原始输入包含时区偏移量(如+00:00
或)Z
,则可以直接使用它进行解析moment
.你不需要使用.utc
或.local
.例如:
var localDate = moment("2015-01-30T10:00:00Z");
Run Code Online (Sandbox Code Playgroud)
And*_*son 16
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
Run Code Online (Sandbox Code Playgroud)
请参阅:http://momentjs.com/docs/#/manipulating/local/
这是我所做的:
var timestamp = moment.unix({{ time }});
var utcOffset = moment().utcOffset();
var local_time = timestamp.add(utcOffset, "minutes");
var dateString = local_time.fromNow();
Run Code Online (Sandbox Code Playgroud)
{{ time }}
UTC 时间戳在哪里。
使用 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
Run Code Online (Sandbox Code Playgroud)