跨日期格式反序列化日期时间WebApi

时间:2016-02-24 00:23:27

标签: c# datetime asp.net-web-api deserialization date-format

我在控制器上有一个方法,它有一个不可为空的日期时间参数。在发送之前,它被格式化为4种方式之一:MM / DD / YYYY,MM / DD / YY,DD / MM / YYYY,DD / MM / YY。

现在,反序列化适用于前2种格式。但不适用于DD / MM / YYYY的任何变化。相反,我得到01/01/0001

控制器示例:

    [HttpPost]
    public object Test(DateTime dt)
    {  

获取有效日期时间:02/23/2016

获取01/01/0001:23/02/2016

1 个答案:

答案 0 :(得分:0)

当您将DateTime数据发布到控制器时,它会接受所有DateTime格式作为系统的DateTime格式。如果发布字符串不是问题,而不是DateTime类型,您可以将DateTime作为字符串发布并将其解析为您想要的格式,如下所示:

    [HttpPost]
    public object Test(string dt)
    { 
      DateTime d = DateTime.ParseExact(dt, "dd/MM/yy", CultureInfo.InvariantCulture);

您可以使用这样的任何DateTime格式。如果不可能那么你总是要坚持特定的格式