twitter bootstrap datetimepicker没有通过getDate函数返回正确的UTC日期时间

时间:2013-04-23 19:03:26

标签: twitter-bootstrap datetimepicker

我正在使用从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

   // 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日期时间。

1 个答案:

答案 0 :(得分:1)

Date.UTC返回指定日期与1970年1月1日午夜之间的毫秒数。

apply方法是一个javascript方法,它允许您调用另一个方法并将父方法的参数传递给它。

我认为这是通过使用传递给UTCDate()方法的参数将Date.UTC()作为初始化程序传递来创建新日期。