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

如何使JSON中DateTime字段以00:00:00格式传输?

如何让C#实体类的DateTime字段在JSON中以"HH:mm:ss"格式传输

根据你提供的实体类和Swagger示例,以下是两种主流JSON序列化库的解决方案:

一、使用System.Text.Json(.NET Core/.NET 5+ 默认)

1. 单个字段单独配置

先定义一个自定义的JSON转换器:

public class TimeFormatConverter : JsonConverter<DateTime>
{
    // 按需调整格式,需要日期的话用"yyyy-MM-dd HH:mm:ss"
    private const string _targetFormat = "HH:mm:ss";

    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        return DateTime.ParseExact(reader.GetString(), _targetFormat, CultureInfo.InvariantCulture);
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value.ToString(_targetFormat, CultureInfo.InvariantCulture));
    }
}

然后在实体类的DateTime字段上添加特性:

public string CompanyName { get; set; }
public bool IsVerified { get; set; } = false;
[JsonConverter(typeof(TimeFormatConverter))]
public DateTime permissionStartDate { get; set; }
[JsonConverter(typeof(TimeFormatConverter))]
public DateTime permissionEndDate { get; set; }

2. 全局配置(所有DateTime字段生效)

在Program.cs(.NET 6+)或Startup.cs中配置全局序列化选项:

// .NET 6+ Program.cs示例
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Converters.Add(new TimeFormatConverter());
    });

二、使用Newtonsoft.Json(Json.NET)

1. 单个字段单独配置

直接利用库内置的转换器指定格式:

public string CompanyName { get; set; }
public bool IsVerified { get; set; } = false;
// 需要日期的话把格式改成"yyyy-MM-dd HH:mm:ss"
[JsonConverter(typeof(DateFormatConverter), "HH:mm:ss")]
public DateTime permissionStartDate { get; set; }
[JsonConverter(typeof(DateFormatConverter), "HH:mm:ss")]
public DateTime permissionEndDate { get; set; }

2. 全局配置

在Startup.cs中设置全局日期格式:

services.AddMvc()
    .AddNewtonsoftJson(options =>
    {
        // 按需调整格式字符串
        options.SerializerSettings.DateFormatString = "HH:mm:ss";
    });

注意事项

  • 如果需要传输包含日期的完整格式(如"2023-01-05 00:00:00"),只需将格式字符串替换为"yyyy-MM-dd HH:mm:ss"
  • 单个字段的配置优先级高于全局配置
  • 反序列化时需确保前端传入的时间格式与转换器指定的格式一致,否则会抛出解析异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:45:25