这是一场噩梦(至少我找不到一个简单的方法),我搜索了几个小时,实在找不到我的解决方案。
如何在web api中以自定义格式处理日期?我需要DD / MM / YYYY格式
我无法发布我的日期,因为我的api希望它们采用默认格式MM / DD / YY,一种解决方案是通过JavaScript将我的所有日期解析为my api需要的格式,但是真的吗?这不是一个更干净的方式吗?
如何让我的api知道我的格式?
我发现了this帖子,并说它不适用于发帖。还没有解决方案。
我的方式错了吗?对这个问题的投票太多了,甚至没有一个好的答案!
答案 0 :(得分:1)
默认情况下,作为JSON格式化程序,在Web.Api中使用Json.NET序列化程序。 Json.NET以ISO 8601格式写日期。 UTC中的日期使用“Z”后缀编写。当地时间的日期包括时区偏移。例如:
2012-07-27T18:51:45.53403Z // UTC
2012-07-27T11:51:45.53403-07:00 // Local
您可以通过在web api配置部分中设置DateFormatString属性来覆盖serrializer date time settings:
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;
}