[英]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.