我在输入表单中使用datepicker,并通过json将结果发送到数据库。我正在使用这一行,从datePicker获取日期:
date = $("#datepicker").datepicker('getDate');
现在,我希望这会返回2014-04-03T00:00:00.000Z
但实际上它会返回2014-04-02T22:00:00.000Z
注意两小时的差异,这也无意中改变了一个月的日期。我没有使用小时和较小的时间单位。但是我确实希望日期正确,而不会在我的代码中添加可怕的+1
。我怀疑这与时区有关,但我似乎无法在文档或其他Q& A在线找到解决方案。有人能指出我正确的方向吗?如果重要,我的时区是GMT +1。
谢谢:)
答案 0 :(得分:10)
我刚刚解决了这个问题,但忘记发布答案了。
检索date
后,这就是我修复它的方法:
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
voilla
答案 1 :(得分:0)
我无法弄清楚你在那里做了什么所以我想出了一些不太好的解决方案。
我在UNIX中获取了alt字段的值:
$( function() {
$( "#datepicker" ).datepicker({
altField: "#alternate",
altFormat: "@",
});
它出现了各种各样奇怪的3个额外的0&s并且在我的时区后面一天。 所以我想出了差异并加上了它。
var a = document.getElementById("alternate").value; // take alternative field UnixTimeStamp value
a = a.slice(0, -3); // get rid of 3 extra 0's
a = +a + +57000; // convert to Thai time