【问题标题】:Angular datetime binding timezone conversion角度日期时间绑定时区转换
【发布时间】:2014-04-17 12:14:30
【问题描述】:

我有一个应用程序,它通过来自休息服务的 json 对象获取日期时间。它像这样返回:

2014-03-30T08:00:00

我绑定到它并通过日期过滤器传递它,它看起来像是将它放入本地时间。

{{ mytime.begin | date:'dd-MMMM-yyyy hh:mm a Z' }}
30-March-2014 08:00 AM -0400

但是,如果我从日期时间选择器(到目前为止我尝试过的每一个)绑定到它,它会减去偏移量,但仍然认为它是 UTC。这是 angular-strap timepicker 的一个示例

<input type="text" size="8" class="form-control" ng-model="mytime.begin" time-format="hh:mm a Z" data-autoclose="1" placeholder="Time" bs-timepicker> 
04:00 AM -0400

但如果我通过时间选择器设置时间,它会正确绑定另一种方式。

感谢您的帮助。

【问题讨论】:

  • 所以你想显示本地时区?
  • 是的,我担心的是,在 ng-model 中它应用了偏移量,但仍显示为 -0400。

标签: angularjs datetime datetimepicker


【解决方案1】:

好的,这就是我发现的。您知道他们对假设的看法;)。所以 MySQL 将日期存储为 UTC,但不费心用尾随的“Z”或“+0000”来具体说明。当该日期被返回和解析时,它在不同情况下的处理方式不同。

Angular 过滤器假定不明确的日期是本地时间。

{{ mytime.begin | date:'dd-MMMM-yyyy hh:mm a Z' }}
30-March-2014 08:00 AM -0400

javascript Date.parse 函数将假定不明确的日期采用 UTC。 Angular Strap 有它自己的日期解析助手,我认为它正在做同样的事情。

<input type="text" size="8" class="form-control" ng-model="mytime.begin" time-format="hh:mm a Z" data-autoclose="1" placeholder="Time" bs-timepicker> 
04:00 AM -0400

为了增加混乱,认为我的应用服务器正在做同样的事情,但将其转换为本地时间。无论如何,只要明确说明时区问题就会消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多