当前位置:  开发笔记 > 前端 > 正文

Phoenix默认的json日期在Chrome/Firefox中的解析方式不同

如何解决《Phoenix默认的json日期在Chrome/Firefox中的解析方式不同》经验,为你挑选了1个好方法。

我正在尝试以timestamp inserted_atjson的形式提供自动字段.

问题是Chrome和Firefox在分析发送内容方面存在分歧.问题似乎是菲尼克斯默认提供的服务"2017-01-12T19:49:000".这由Firefox和IE解析为UTC,而Chrome将此转换为本地时间.添加一个Z("2017-01-12T19:49:000Z"),所有都给当地时间.

结果我将我的代码转换为:

def render("message.json", %{message: message}) do
    %{id: message.id,
      content: message.content,
      date: Ecto.DateTime.to_iso8601(message.inserted_at)<>"Z"}
end

但这感觉非常黑客,必须有一个更好的方法.



1> michalmuskal..:

问题是Ecto不知道日期时间是否是UTC.幸运的是,Ecto 2.1有一个更好的选择,因为它支持Elixir 1.3中的内置日历类型.

模式中有两种新类型 - naive_datetime存储没有时区的日期时间(使用Elixir的NaiveDateTime结构),并将utc_datetime日期时间存储在UTC时区中(使用Elixir的DateTime结构).后来序列化为iso8601与最终Z.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有