Web API 前端傳入參數時間為Utc(時間相差8個小時)
1.在Program.cs
builder.Services.AddControllers().AddJsonOptions(options =>
{// 序列化時將時間轉換為本地時間(北京時間)options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());// 或直接指定 DateTime 處理方式(根據需求選擇)options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
});
2.將時間轉化成自定義
public class DateTimeConverter : JsonConverter<DateTime>
{private readonly string _dateFormat = "yyyy-MM-dd HH:mm:ss"; // 自定義格式public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options){// 反序列化:將字符串轉換為本地時間(假設前端傳遞的是UTC或帶時區的時間)if (DateTime.TryParse(reader.GetString(), out DateTime date)){// 若傳遞的是UTC時間,轉換為本地時間(北京時間)if (date.Kind == DateTimeKind.Utc){return TimeZoneInfo.ConvertTimeFromUtc(date, TimeZoneInfo.Local);}return date;}return DateTime.Now;}public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options){// 序列化:將本地時間轉換為指定格式字符串(避免默認UTC格式)writer.WriteStringValue(value.ToString(_dateFormat));}
}