Dates without time in ASP.NET Web API's JSON output

前端 未结 3 663
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-01 18:12

Is there a simple way to configure JSON.NET so that some DateTime fields will be formatted without time and other DateTime fields

相关标签:
3条回答
  • 2020-12-01 18:18

    If you need this to only affect a particular field, create a converter type first:

    public class OnlyDateConverter : IsoDateTimeConverter
    {
        public OnlyDateConverter()
        {
            DateTimeFormat = "yyyy-MM-dd";
        }
    }
    

    and then add this attribute to whatever fields/properties you want this for:

    [JsonConverter(typeof(OnlyDateConverter))]
    
    0 讨论(0)
  • 2020-12-01 18:18

    Try adding this line to configure your Web API:

    config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
        new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
    
    0 讨论(0)
  • 2020-12-01 18:35

    Yousesef's answer with the OnlyDateConverter is best. But here is one alternative:

    private DateTime _birthday;
    public string Birthday
    {
        get { return _birthday.ToString("yyyy-MM-dd"); }
        set {
              _birthday = DateTime.ParseExact(value, "yyyy-MM-dd",
                                              CultureInfo.InvariantCulture);
            }
    }
    

    Advantage - You don't need to bind the Newtonsoft.Json library to your classes.

    Disadvantage - The property is now exposed as a string anywhere you use it, which can cause it's own set of problems.

    0 讨论(0)
提交回复
热议问题