修改JSON日期时间对象格式

时间:2014-10-15 19:21:00

标签: c# json datetime

您好我正在编写一个返回DateTime的JSON Web服务。

以EPOCH格式返回日期时间。是否可以修改它返回的JSON日期格式。

代码段

  [ServiceContract]
    public interface ITMAppServices
    {
          [OperationContract]
          [WebGet(UriTemplate = "/Test",
          RequestFormat = WebMessageFormat.Json,
          ResponseFormat = WebMessageFormat.Json)]

        DateTime GetData();

    }

实际实施

public class TMAppServices : ITMAppServices
 {
     public DateTime GetData()
     {
          return DateTime.Now;
     }
 }

我只是在C#

中返回datetime.now

以EPOCH格式输出:

“/日期(1413399311687 + 0300)/”

我想要以C#返回的相同格式输出 或者如果我从SQL

获取日期时间

1 个答案:

答案 0 :(得分:2)

看起来您正在编写WCF服务。默认情况下,WCF使用DataContractJsonSerializer进行JSON序列化 - 使用此格式。

您应该考虑使用replacing it with JSON.Net - 或者最好使用ASP.Net WebAPI来编写您的服务 - 已经使用JSON.Net

JSON.Net将(默认情况下)使用ISO-8601序列化格式。这是通过网络发送日期的首选格式,尤其是在JSON中。例如,"2014-10-15T21:54:00-07:00"

您应该使用DD MM YYYY格式,因为JSON旨在是机器可读的。如果具有MM DD YYYY文化的计算机尝试读取该字符串,则可能会错误解释该值。例如," 1/2 / 2014"可以读作1月2日或2月1日。

顺便说一句 - 您应该考虑在.NET中使用DateTimeOffset类型而不是DateTime