gpt4 book ai didi

javascript - c# datetime utc 字符串和在 javascript 中使用时的 z

转载 作者:行者123 更新时间:2023-12-03 07:16:07 25 4
gpt4 key购买 nike

我从我的 api 得到一个日期,我得到的格式是 "2019-04-17T15:04:28"日期为 UTC。
如果我回来的日期最后有Z,还是没关系。如果 Z 不存在,Javascript 日期函数会显示不正确吗?

谢谢@Esko,谢谢,我认为如果您更改 startup.cs 中的 json 序列化程序选项,那么在 .net 核心中的困惑是通过以下方式:

AddJsonOptions(opt =>{ 
opt.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
});

Visual Studio 中的工具提示说 enter image description here但是它没有打开 Z 并且文档也没有显示 Z ( https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_DateFormatHandling.htm )

相反,我将尝试设置不同的选项
opt.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;

最佳答案

我有类似的问题,我找到了答案
在我的情况下,日期时间是 Kind Unspecified ,在这种情况下,JsonConvert 没有足够的信息来最后添加 Z。
你有几个选择:

  • 使用 ToUniversalTime 将其转换为 UTC方法
  • 如果您确定您正在使用 UTC,则可以将其添加到一般 JsonOptions 中,如下所示:
     JsonConvert.DefaultSettings = (() =>
    {
    return new JsonSerializerSettings
    {

    Converters = new List<JsonConverter>() {new IsoDateTimeConverter { DateTimeStyles= System.Globalization.DateTimeStyles.AssumeUniversal } }
    };
    });
  • 如果您只想将 Kind=UTC 添加到当前未指定日期,您始终可以这样编写 isoConverter:
     JsonSerializerSettings
    {

    Converters = new List<JsonConverter>() { new CustomIsoDateTimeConverter() }
    };

  • 类将如下所示:
     public class CustomIsoDateTimeConverter : IsoDateTimeConverter
    {
    public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
    {
    if (value is DateTime dateTime && dateTime.Kind == DateTimeKind.Unspecified)
    value = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);


    base.WriteJson(writer, value, serializer);
    }
    }

    关于javascript - c# datetime utc 字符串和在 javascript 中使用时的 z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55611851/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com