在Swift中将日期转换为“/ Date(631148400000 + 0100)/”字符串

时间:2016-12-11 07:53:20

标签: ios swift date swift3

我需要将Swift Date对象转换为日期刻度字符串,如“/ Date(631148400000 + 0100)/”。

以下链接告诉我如何将日期刻度字符串转换为Date对象,但不反之亦然: How to convert date like \/Date(1440156888750-0700)\/ to something that Swift can handle?

我该怎么做? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

来自Stand-Alone JSON Serialization

  

DateTime值以“/ Date(700000 + 0500)/”的形式显示为JSON字符串,其中第一个数字(在提供的示例中为700000)是GMT时区中的毫秒数,常规(非夏令时)1970年1月1日午夜以来的时间。这个数字可能是负数,表示较早的时间。示例中由“+0500”组成的部分是可选的,表示时间属于Local类型 - 也就是说,应该在反序列化时转换为本地时区。如果不存在,则将时间反序列化为Utc。

表示实际数字(本例中为“0500”)及其符号(+或 - )。

来自Use JSON.NET to parse json date of format Date(epochTime-offset)

  

...在此screwy format中,时间戳部分仍然仅基于UTC。偏移量是额外的信息。它不会更改时间戳。您可以给出不同的偏移量,或者完全省略它,它仍然是同一时刻。

因此,滴答数是自格林威治标准时间1970年1月1日以来的毫秒数。添加时区规范只会改变时区 在.NET中本地呈现,可以简单地省略该部分 生成JSON日期字符串时:

extension Date {
    var jsonDate: String {
        let ticks = lround(timeIntervalSince1970 * 1000)
        return "/Date(\(ticks))/"
    }
}

示例:

print(Date().jsonDate) // /Date(1481446227993)/