You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#类对象序列化为JSON时如何去除DateTime属性的时间部分

解决方法

根据使用场景选择对应配置即可,序列化后日期字段将仅输出yyyy-MM-dd格式的纯日期内容,无时间、时区后缀:

  • 全局配置(所有日期字段统一生效)
    序列化时传入自定义序列化规则,指定日期格式、关闭时区自动转换:
    // Act
    var jsonSettings = new JsonSerializerSettings
    {
        DateFormatString = "yyyy-MM-dd",
        DateTimeZoneHandling = DateTimeZoneHandling.Unspecified
    };
    string output = JsonConvert.SerializeObject(driver, jsonSettings);
    
    该配置下所有DateTime类型字段都会按纯日期格式输出,最终DateOfBirth字段序列化结果为"DateOfBirth":"1959-12-11"。
  • 单属性配置(仅指定字段生效)
    如果仅需要DateOfBirth字段输出纯日期,其他日期字段保留原有序列化逻辑,直接在模型类的对应属性上添加格式转换特性即可,无需修改序列化调用代码:
    public class Driver
    {
        public Gender Gender { get; set; }
        [JsonConverter(typeof(Newtonsoft.Json.Converters.IsoDateTimeConverter), DateTimeFormat = "yyyy-MM-dd")]
        public DateTime DateOfBirth { get; set; }
    }
    
  • 注意事项
    原输出带时区偏移是因为DateTime.Parse默认生成的是带本地时区标记的DateTime实例,配置DateTimeZoneHandling = DateTimeZoneHandling.Unspecified可以避免序列化时自动做时区转换,防止出现因时区差导致输出日期和赋值日期不一致的问题。

内容的提问来源于stack exchange,提问作者shreyas35

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:12:43