我正在使用从here下载的最新bootstrap datetimepicker,但在使用API时遇到了获取正确UTC日期时间的问题。
var dateTimePicker = jQuery('.datetimepicker').datetimepicker();
dateTimePicker.on('changeDate', function(e) {
var eventTarget = jQuery(e.target);
var picker = eventTarget.data('datetimepicker');
console.log( "getDate: " + picker.getDate());
console.log( "getLocalDate: " + picker.getLocalDate());
console.log( "getLocalDate to UTC: " + picker.getLocalDate().toUTCString());
输出
getDate: Wed Apr 24 2013 05:53:40 GMT+0530 (IST)
getLocalDate: Wed Apr 24 2013 00:23:40 GMT+0530 (IST)
getLocalDate to UTC: Tue, 23 Apr 2013 18:53:40 GMT
表示getLocalDate在我的时区GMT +0530中返回正确的日期时间,getLocalDate.toUTCString返回我本地日期时间的相应UTC日期时间。但是getDate显然没有按照doc 0返回正确的UTC日期时间p>
// Considering you are on a GMT-3 timezone and the input contains '2000-01-17 10:p'
var localDate = picker.getLocalDate(); // localDate === 2000-01-17 07:00
var utcDate = picker.getDate(); // utcDate === 2000-01-17 10:00
In the source code我发现以下代码无法理解。
function UTCDate() {
return new Date(Date.UTC.apply(Date, arguments));
}
有人可以让我了解代码段新日期(Date.UTC.apply(日期,参数))的工作原理以及应该返回的内容吗?
在撰写本文时,我的时区GMT +0530是 Wed Apr 24 00:19 ,其中 上面提到的UTCDate函数返回 2013年4月24日星期三05:48:49 GMT + 0530(IST),这显然不是我的时区中日期时间的相应UTC日期时间。
答案 0 :(得分:1)
Date.UTC返回指定日期与1970年1月1日午夜之间的毫秒数。
apply方法是一个javascript方法,它允许您调用另一个方法并将父方法的参数传递给它。
我认为这是通过使用传递给UTCDate()方法的参数将Date.UTC()作为初始化程序传递来创建新日期。