如何在ASP.NET Web API中接受ISO日期格式

时间:2014-11-09 21:37:32

标签: asp.net-mvc json asp.net-mvc-4 datetime asp.net-web-api

jquery $.ajax()以ISO格式从浏览器发送日期为json:yy-mm-dd(如果这样做更好,我可以使用yyyy-mm-ddPOST正文中。

ASP.NET MVC4 Web API控制器包含DateTime属性。

如何在任何服务器线程文化设置中获取日期值?

我试过

 public class TestController : ApiController {

    public class PlaaniSisend
    {
        public DateTime date { get; set; }
    }


    [HttpPost]
    public HttpResponseMessage Post([FromBody] PlaaniSisend vali)
    {
      Console.Write(vali.date );
    }
  }

如果服务器线程文化日期格式与ISO不同,则vali.date值错误。 如何解决这个问题,以便在任何服务器文化设置中使用ISO日期格式进行解析?

2 个答案:

答案 0 :(得分:0)

这对我有用:我在web.config中定义了全球化设置:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.Culture = System.Globalization.CultureInfo.CurrentCulture;

然后,在Global.asax.cs> Application_Start,我将JsonFormatter设置为使用当前文化:

abstract

答案 1 :(得分:-1)

您可以将数据接受为字符串,并使用特定格式和文化进行解析:

public class TestController : ApiController {

  public class PlaaniSisend
  {
    public string date { get; set; }
  }

  [HttpPost]
  public HttpResponseMessage Post([FromBody] PlaaniSisend vali)
  {
    DateTime date = DateTime.ParseExact(vali.date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
    Console.Write(date);
  }

}