moment.js转换没有效果
我有一个输入字段,用户需要选择日期/时间本地机器将总是在GMT或BST中,具体取决于一年的时间。
对于那些不知道英国时间诡计的人:
GMT(格林威治标准时间)始终等于UTC
BST(英国夏令时)在夏季月份为GMT + 1
用户输入的日期将存储在设置为GMT的数据库中,因此永远不会抵消时间。 因此我需要将用户输入的内容转换为GMT / UTC。
但是,我的转换会导致返回相同的日期。
我究竟做错了什么?
https://jsfiddle.net/r68owagL/
这是来自jsFiddle的代码
function log(obj) {
var html = "<table>"
for(var member in obj)
{
html += "<tr>"
+ "<td>" + member + ": </td>"
+ "<td>" + obj[member].format("YYYY-MM-DD HH:mm:ss") + "</td>"
+ "</tr>";
}
html += "</table>";
document.body.innerHTML = html;
}
var strDate = '2016-07-14 10:51:00';
var obj = {
n: moment(strDate), //Gives: 2016-07-14 10:51:00
u: moment.utc(strDate), //Gives: 2016-07-14 10:51:00
b: moment.tz(strDate, "Europe/London") //Gives: 2016-07-14 10:51:00
}
log(obj);
如果你删除格式字符串,并输出日期如此
obj[member].format()
那么它就像这样输出
n: 2016-07-14T10:51:00+02:00
u: 2016-07-14T10:51:00+00:00
b: 2016-07-14T10:51:00+01:00
所以自定义格式字符串只输出日期而不考虑偏移量。 要将它们考虑在内,请在将其打印出来之前将其转换为UTC
obj[member].utc().format("YYYY-MM-DD HH:mm:ss")
这导致了
n: 2016-07-14 08:51:00
u: 2016-07-14 10:51:00
b: 2016-07-14 09:51:00
链接地址: http://www.djcxy.com/p/29331.html