【问题标题】:deserialize datetime WebApi across date formats跨日期格式反序列化 datetime WebApi
【发布时间】:2016-02-24 00:23:27
【问题描述】:

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

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

示例控制器:

    [HttpPost]
    public object Test(DateTime dt)
    {  

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

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

【问题讨论】:

  • 您想同时支持所有四种输入格式吗?那么告诉我,01/02/2016 是 2 月 1 日还是 1 月 2 日?你不能把它们区分开来。选择一种格式并坚持下去 - 我建议yyyy-MM-dd 或多或少是标准的。

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


【解决方案1】:

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

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

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

【讨论】:

  • 请修正你所有帖子的语法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2016-08-18
相关资源
最近更新 更多