Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无过滤器的AngularUI日期选择器,什么';发生什么事了?_Javascript_Angularjs_Date_Datepicker - Fatal编程技术网

Javascript 无过滤器的AngularUI日期选择器,什么';发生什么事了?

Javascript 无过滤器的AngularUI日期选择器,什么';发生什么事了?,javascript,angularjs,date,datepicker,Javascript,Angularjs,Date,Datepicker,我在我的网络应用程序中使用angularUI日期选择器时,突然发现: 特别是我在控制器中设置的日期如下: $scope.getDate = function() { $scope.dt = new Date(2015,0,1); }; $scope.getDate(); <pre>With angular date filter date is: <em>{{dt | date:'medium' }}</em></pre> <pre

我在我的网络应用程序中使用angularUI日期选择器时,突然发现:

特别是我在控制器中设置的日期如下:

$scope.getDate = function() {
   $scope.dt = new Date(2015,0,1);
};
$scope.getDate();
<pre>With angular date filter date is: <em>{{dt | date:'medium' }}</em></pre>
<pre>Without angular date filter is: <em>{{dt}}</em></pre>
然后在我的html中,我用以下两种方式显示日期:

带角度日期过滤器的
日期为:{dt|date:'medium'}
没有角度日期过滤器的是:{{dt}
正如您在这个plunker中看到的,我选择了日期“01/01/2015”(2015年1月1日),如果我看到带有角度日期过滤器的plunker,我会得到正确的日期和时间

但是,如果我移除过滤器,我会在过去1小时内得到相同的日期

这当然是时区的问题,但我找不到这种行为的任何来源,所以我想了解到底发生了什么。有什么解释或网站可以浏览吗

另外,什么将到达服务器?我必须在服务器上做一些特殊的格式化吗?(我不能测试这个atm机)


我不知道这是否重要(我想是的),但我的浏览器住在意大利

显示的两个日期完全相同。它们只是格式不同而已。当您实例化一个日期时,您的浏览器使用您当前的时区(2015年1月1日午夜,意大利,所以UTC+1)

使用日期过滤器时,Angular会在当前时区中显示日期,而不会显示UTC日期

试试看:

根据经验,在向服务器发送日期时,始终使用ISO8601日期格式(这是JSON.stringify在使用日期值序列化对象时所做的)

var date = new Date(2015,0,1);
date.toString(); // -> "Thu Jan 01 2015 00:00:00 GMT+0100 (CET)"
date.toISOString(); // -> "2014-12-31T23:00:00.000Z" (Z means UTC time)