我需要将Swift Date对象转换为日期刻度字符串,如“/ Date(631148400000 + 0100)/”。
以下链接告诉我如何将日期刻度字符串转换为Date对象,但不反之亦然: How to convert date like \/Date(1440156888750-0700)\/ to something that Swift can handle?
我该怎么做? 提前谢谢。
答案 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)/