【发布时间】:2016-01-07 02:46:08
【问题描述】:
我一直在努力让这件事发挥作用。这是我的问题。
我从不同格式的 REST API 获取日期 (mm-dd-yyyy-timezone, mm-dd-yyy hh:mm:ss, yyyy-mm-dd-timezone, yyyy-mm-dd hh:mm:ss) 但我必须将其格式化为 yyyy-mm-dd 格式。我使用子字符串来捕获前 10 个字符以通过忽略时间/时区来获取日期字符串。
在这个过程中,我观察到了这个问题。
new Date("08-11-1987") gives me Tue Aug 11 1987 00:00:00 GMT-0700 (Pacific Daylight Time)
在哪里,
new Date("1987-08-11") gives me Mon Aug 10 1987 17:00:00 GMT-0700 (Pacific Daylight Time)
为什么在创建 Date 对象时会有一天的差异。
【问题讨论】:
-
您的服务器 API 不应将日期作为字符串值返回。日期应按原样返回。当日期被序列化时,它具有特定的格式并且还具有有关时区的信息。 Javascript 引擎可以用来确定正确的日期。
-
请提供您的代码
-
@chandermani 感谢您的回复,存在与服务相关的问题,需要一段时间才能解决。同时,我们正在尝试在 UI 中解决此问题。我只是想了解这个 JS 引擎的行为。
-
@pankaj 感谢您的回复。以下是我的代码 - $filter("date")(new Date(response.dateOfBirth), "yyyy-MM-dd");如果 response.dateOfBirth 是 08-11-1987,它工作正常。如果我通过 1987-08-11 则用户的出生日期减 1。
-
Javascript 引擎会根据当前的语言环境解析日期(如果将字符串传递给它)。所以我们应该避免字符串解析。
标签: javascript angularjs date datetime format