繁体   English   中英

Javascript Date() 正在更改日期

[英]Javascript Date() is changing the 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);    
    }
});

一月份,我得到这个输出:

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个小时? 我需要考虑这个吗? 我该怎么做?

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

我通过在 Date 参数上添加时间解决了这个问题:

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

您可以在之后将其删除

解析日期时的默认时区是 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() ); 

我认为moment.js可以帮助你处理日期。

这是给你的小提琴

 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); });
 body { font-family: arial; }
 <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>

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM