Javascript Date()正在更改日期

时间:2016-01-05 20:08:07

标签: javascript date

我正在从谷歌日历中提取事件。

我能看到一个活动日期:

var date = when.split("T")[0];
console.log(date);

这会输出2016-01-07。然后我将它放入一个对象内的数组中:

allEvents.push({
    eventDate:date,
    eventTime:time,
    eventTBD:TBD
});

然后,当我再次去抓日期时:

$.each(allEvents, function(i, v){
    var eventDate = new Date(v.eventDate);
    if(eventDate > startDate && eventDate < endDate){
        console.log(v.eventDate);
        console.log("Show This Date: " + eventDate);    
    }
});

1月份,我得到了这个输出:

2016-01-07
Show This Date: Wed Jan 06 2016 19:00:00 GMT-0500 (EST)

三月份,我得到了这个输出:

2016-03-19
Show This Date: Fri Mar 18 2016 20:00:00 GMT-0400 (EDT)

它显示我刚刚展示的日期前一天...似乎是5个小时的休息时间?我需要考虑到这个吗?我该怎么做?

3 个答案:

答案 0 :(得分:0)

解析日期时的默认时区是UTC。如果您想使用客户端时区,您可以调整日期,以便它在浏览器的时区中的正确时间出现:

var eventDate = new Date(v.eventDate);
var ms_per_minute = 60000;
eventDate.setTime( eventDate.getTime() + eventDate.getTimezoneOffset()*ms_per_minute );

否则,只要您显示日期,就可以使用UTC:

console.log("Show This Date: " + eventDate.toUTCSTring() ); 

答案 1 :(得分:0)

我认为moment.js可以帮助你进行约会操作。

这是你的小提琴

&#13;
&#13;
jQuery(document).ready(function($) {
  var the_date_string = $('#in-date > pre').text();
  var result = moment(the_date_string, 'YYYY-MM-DD'); //here is more info about that http://momentjs.com/docs/#/parsing/string-format/
  $('#out-date > pre').text(result);


});
&#13;
body {
  font-family: arial;
}
&#13;
<script src="http://momentjs.com/downloads/moment.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 id="in-date"> INPUT: <pre>2016-01-07</pre></h1>
<h1 id="out-date"> OUTPUT: <pre></pre></h1>
&#13;
&#13;
&#13;

竖起大拇指,如果你喜欢它! :)

<强> [编辑] 如果您只想要客户端时间戳(采用国际格式),您可以轻松使用moment()函数

答案 2 :(得分:0)

我知道这很老了,但可能会对某人有所帮助。

我通过在Date参数上添加时间来解决此问题:

var eventDate = new Date(v.eventDate + ' 00:00:00');

您可以在以后删除它