我有一个C#应用程序,它将其DTO序列化为JSON,并将它们发送给要由Ruby处理的线路。现在序列化日期的格式如下:
/Date(1250170550493+0100)/
当这次点击Ruby应用程序时,我需要将此字符串表示形式转换回日期/日期时间/时间(无论它在Ruby中)。有什么想法我会怎么做?
干杯,克里斯。
答案 0 :(得分:3)
您可以解析自纪元以来的毫秒数,例如:
def parse_date(datestring)
seconds_since_epoch = datestring.scan(/[0-9]+/)[0].to_i / 1000.0
return Time.at(seconds_since_epoch)
end
parse_date('/Date(1250170550493+0100)/')
你仍然需要处理时区信息(+0100
部分),所以这是一个起点。
答案 1 :(得分:3)
您可以使用Json.NET来序列化DTO而不是内置的.NET JSON序列化程序。它为您提供了如何序列化日期的灵活性(即作为构造函数,ISO格式等)。
答案 2 :(得分:2)
.NET从纪元开始以毫秒为单位进行序列化,因此您需要将时区前的部分除以1000.其他明智的日期将是数千年的
答案 3 :(得分:1)
您可以使用Time.strptime
将此解析为具有正确时区的Time
对象:
Time.strptime(string, "/Date(%Q%z)/")
例如:
string = "/Date(1250170550493+0100)/"
Time.strptime(string, "/Date(%Q%z)/")
#=> 2009-08-13 14:35:50 +0100