gpt4 book ai didi

javascript - 没有过滤器的 AngularUI Datepicker,发生了什么?

转载 作者:行者123 更新时间:2023-12-02 16:46:52 25 4
gpt4 key购买 nike

当我突然遇到这个问题时,我正在我的网络应用程序中使用 angularUI 日期选择器:

http://plnkr.co/edit/MLnWCtYHMNqLeuFOetWH?p=preview

特别是我在 Controller 中设置日期,如下所示:

$scope.getDate = function() {
$scope.dt = new Date(2015,0,1);
};
$scope.getDate();

然后在我的 html 中我以两种方式显示日期:

<pre>With angular date filter date is: <em>{{dt | date:'medium' }}</em></pre>
<pre>Without angular date filter is: <em>{{dt}}</em></pre>

正如您在此 plunker 中看到的,我选择了日期“01/01/2015”(2015 年 1 月 1 日),如果我看到带有 Angular 日期过滤器的 plunker,我会得到正确的日期和时间。

但是,如果我删除过滤器,我会得到 1 小时前的相同日期。

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

另外,什么会到达服务器?我需要在服务器上进行一些特殊的格式化吗? (我无法测试这个自动取款机)

不知道这是否重要(我认为是),但我的浏览器位于意大利。

最佳答案

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

使用日期过滤器时,Angular 会显示当前时区的日期,而显示没有时区的 UTC 日期。

尝试一下:

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)

根据经验,在将日期发送到服务器时,请始终使用 ISO8601 日期格式(这就是 JSON.stringify 在序列化具有日期值的对象时所做的操作)。

关于javascript - 没有过滤器的 AngularUI Datepicker,发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27057269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com