【问题标题】:how to ignore DateTimeZoneHandling.Utc for some fields like date of birth如何忽略出生日期等某些字段的 DateTimeZoneHandling.Utc
【发布时间】:2019-10-19 02:34:06
【问题描述】:

我得到了许多日期时间字段,我在 Startup.cs 中处理之前将它们转换为 UTC,但我想忽略一些要转换为 UTC 的字段,例如 DOB。如何忽略某些字段。我是否需要放置任何属性或某些东西,以便我可以按原样使用 dob 而无需转换为 UTC。

Startup.cs相关代码

var builder = services.AddMvc();
builder.AddJsonOptions(options =>
{
    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
    // for UTC for datetime
    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
    IsoDateTimeConverter dateConverter = new IsoDateTimeConverter
    {
        DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'"
    };
    //options.SerializerSettings.Converters.Add(dateConverter);
});

具有 dob 字段的类

[DataContract(Name = "Patient")]
public class Patient
{
    [DataMember(IsRequired = true)]
    public Guid PatientId { get; set; }

    [DataMember(IsRequired = true)]
    public DateTime DateOfBirth { get; set; }
}

【问题讨论】:

  • 伙计,尝试删除这行options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; IsoDateTimeConverter dateConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy'-MM'-'dd'T'HH':'mm':'ss.fff'Z'" }; 在任何需要的地方,日期都将转换为UTC日期。
  • 我想要 utc 日期,但不是所有字段。如果我删除这些行,那么它将适用于所有人。

标签: c# asp.net asp.net-mvc asp.net-core asp.net-core-mvc


【解决方案1】:

听起来您正试图使那些特定的日期时间对象没有时区。在他们的 set 方法中,您可以将他们的时区设置为 UTC 或将他们的偏移量设置为零。

【讨论】:

  • 但我更喜欢 Jake Steffen 的回答。
【解决方案2】:

尝试使用这个装饰器:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'")]

【讨论】:

  • 我试过 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "yyyy'- 'MM'-'dd'T'HH':'mm':'ss.fff'Z'")] public日期时间 DateOfBirth { 得到;放; } 仍然不工作..
  • 如果我给出 2000 年 1 月 1 日,它需要 1 天后,1999 年 12 月 31 日
猜你喜欢
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多