Asp.net mvc 发布日期web api自定义格式

Asp.net mvc 发布日期web api自定义格式,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,这是一个噩梦(至少我找不到一个简单的方法),我已经搜索了几个小时,真的找不到我的解决方案 如何在web api中以自定义格式处理日期?我需要DD/MM/YYYY格式 我不能发布我的日期,因为我的api希望它们是默认格式MM/DD/YY,一个解决方案是通过JavaScript将我的所有日期解析为api需要的格式,但这是真的吗?这不是一种更干净的方式吗 如何让api知道我的格式 我找到了一个帖子,上面说它不适合发布。目前还没有解决办法 我错了吗?对这个问题投了太多的赞成票,甚至连一个好答案都没有 默

这是一个噩梦(至少我找不到一个简单的方法),我已经搜索了几个小时,真的找不到我的解决方案

如何在web api中以自定义格式处理日期?我需要DD/MM/YYYY格式

我不能发布我的日期,因为我的api希望它们是默认格式MM/DD/YY,一个解决方案是通过JavaScript将我的所有日期解析为api需要的格式,但这是真的吗?这不是一种更干净的方式吗

如何让api知道我的格式

我找到了一个帖子,上面说它不适合发布。目前还没有解决办法


我错了吗?对这个问题投了太多的赞成票,甚至连一个好答案都没有

默认情况下,作为Web.Api中的JSON格式化程序,使用JSON.NET序列化程序。Json.NET以格式写入日期。UTC中的日期以“Z”后缀书写。本地时间中的日期包括时区偏移。例如:

2012-07-27T18:51:45.53403Z         // UTC
2012-07-27T11:51:45.53403-07:00    // Local
您可以通过在web api配置部分中设置DateFormatString属性来覆盖:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd";
    }
}
另外,您可能需要更改Global.asax中的线程区域性设置

protected void Application_BeginRequest(object sender, EventArgs e)
{            
    var newCulture = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
    newCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
    newCulture.DateTimeFormat.ShortTimePattern = "HH:mm";
    newCulture.DateTimeFormat.LongTimePattern = "HH:mm:ss";
    newCulture.DateTimeFormat.DateSeparator = "-";
    Thread.CurrentThread.CurrentCulture = newCulture;
}

为什么不使用字符串并将其格式化为您想要的任何格式?您的date.ToString(“dd/MM/yyyyy”)应该这样做。