在时刻js创建UTC时间会返回奇怪的结果

时间:2014-09-29 19:49:17

标签: javascript datetime momentjs

我在周一晚上撕毁了我的声音!有谁能帮我理解下面的问题? 我的浏览器01-09-2014上有以下字符串(这是本地时间),我想将其转换为UTC,以便我可以将其保存回服务器。 这就是我在做的事情:

    var localDate = moment("01-09-2014", "DD-MM-YYYY");
    var utcDate = localDate.utc();
    console.log("Local Date " + localDate.toDate() + " UTC Date " + utcDate.toDate());

奇怪的是,最后一行输出:

Local Date Mon Sep 01 2014 00:00:00 GMT+0200 (Romance Daylight Time) UTC Date Mon Sep 01 2014 00:00:00 GMT+0200 (Romance Daylight Time) 

问题

  • 为什么UTC日期看起来与本地日期完全相同(我希望当地时间比UTC早2小时,因为我在GMT + 2区域内)?
  • 为什么UTC的日期是GMT + 0200?我希望UTC日期有GMT + 000

你能帮我解决这两个问题吗?

1 个答案:

答案 0 :(得分:3)

我不确定...但我认为应该是:

var utcDate = localDate.utc().format()

请参阅:

http://momentjs.com/docs/#/parsing/utc/

<强>已更新

小提琴:

http://jsfiddle.net/qhk9tnLr/2/

JS:

console.log("Local Date: " + moment("01-09-2014", "DD-MM-YYYY").toDate());
console.log("UTC Date: " + moment("01-09-2014", "DD-MM-YYYY").utc().format("ddd MMM DD YYYY HH:mm:ss zZZ"));

输出:

Local Date: Mon Sep 01 2014 00:00:00 GMT+0200
UTC Date: Sun Aug 31 2014 22:00:00 UTC+0000

结论:

toDate()会给当地时间 - 使用UTC utc().format()