【问题标题】:"Fix" Angular UTC Dates“修复”角度 UTC 日期
【发布时间】:2017-10-16 01:20:05
【问题描述】:

我正在构建一个使用 REST API 获取数据的 Angular 2.x 应用程序。 API 以 JSON 格式提供一些日期信息:

  "punchDate": "2017-05-17T00:00:00",
  "timezone": "CST"

如果我让 Angular 将 punchDate 打印到屏幕上(在我的 CST 时区),它将显示:2017 年 5 月 16 日,晚上 7:00:00。

当该日期被分配给日期选择器时,它会说“2017 年 5 月 16 日”,而 API 真正打算让我做的是让日期选择器说“2017 年 5 月 17 日”。

JSON 响应来自 API,进入 Angular 服务,该服务将其转换为 TypeScript 接口,并且该服务在整个应用程序中使用。

类:

export interface Punch{ 
    punchDate: Date;
    timezone: string;
}

服务方式:

public get = (id: number): Observable<Punch> => {
    return this.http.get('/api/punch/' + id).map(res => res.json());
}

我如何让 Angular 按照 API 的意图处理这个日期?

Plunkr 演示问题:

https://plnkr.co/edit/hYYRbyWLFBvzh4uGBJay

【问题讨论】:

    标签: json angular date


    【解决方案1】:

    这可能是您的浏览器所特有的。当我运行你的代码时,他们都说 17th。

    【讨论】:

    • 您是否在 UTC 时区(或者您的计算机设置为 UTC)?
    • 我可以,让我试试。
    • 我在PC上更改了我的时区,重新启动浏览器,尝试了不同的浏览器,我仍然看到同样的东西。
    • 你是对的,一些时髦的事情正在发生。 Chrome 将日期报告为 16 日,IE 报告为 17 日。
    • 如果我删除日期管道,那么这两个在浏览器中是相同的(我也希望如此)。因此,也许 datepipe 是让我的演示 plunkr 显示该问题的原因(尽管显然仅在 Chrome 中)。我仍然相信这是对“当地时间”的解释导致问题,但也许它在我们正在使用的日期选择器内或其他东西 - 需要进行更多调查。感谢您的帮助。
    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多