c#将JSON日期序列化为ruby

时间:2009-08-13 14:09:20

标签: c# ruby json serialization

我有一个C#应用程序,它将其DTO序列化为JSON,并将它们发送给要由Ruby处理的线路。现在序列化日期的格式如下:

/Date(1250170550493+0100)/

当这次点击Ruby应用程序时,我需要将此字符串表示形式转换回日期/日期时间/时间(无论它在Ruby中)。有什么想法我会怎么做?

干杯,克里斯。

4 个答案:

答案 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