如何为.net core 2.0 webapi设置默认日期时间格式

时间:2018-04-23 08:23:30

标签: .net-core asp.net-core-2.0 asp.net-core-webapi

目前在我当地。 API期望与SQL Server数据库中的格式相同,即yyyy-mm-dd。

但是,当我将应用程序部署到生产服务器时。 API期望日期时间格式为yyyy-dd-mm。

有没有办法配置我的.net核心web api接受yyyy-mm-dd作为每个环境的默认格式?

2 个答案:

答案 0 :(得分:8)

请显示一些代码。您可以在AddJsonOpions()

中的ConfigureServices()管道中尝试以下操作
services
        .AddMvc()
        .AddJsonOptions(options =>
                        {
      //Set date configurations
      //options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd"; // month must be capital. otherwise it gives minutes.
                        });

答案 1 :(得分:2)

100%的时间,如果我使用DateTime,则为其创建一个接口。在进行测试时,它会使生活变得更加轻松。我相信这也会对您有用。

这种方法有两个原因。

  1. 这是可以测试的。
  2. 它从业务逻辑中抽象出DateTime的依赖关系。
  3. 如果您应用中的其他系统可能需要其他格式,只需创建一个新的MyAppDateTimeProvider

public interface IDateTimeProvider
{
    DateTime Now { get; }
    string GetDateString(int year, int month, int day);
    DateTime TryParse(string sqlDateString);
}

public class SqlDateTimeProvider : IDateTimeProvider
{
    public DateTime Now => DateTime.UtcNow;

    public string GetDateString(int year, int month, int day)
    {
        return new DateTime(year, month, day).ToString("yyyy-MM-dd");
    }

    public DateTime TryParse(string sqlDateString)
    {
        var result = new DateTime();
        DateTime.TryParse(sqlDateString, out result);
        return result;
    }
}