gpt4 book ai didi

c# - 验证 System.DateTime 是 UTC 格式

转载 作者:太空狗 更新时间:2023-10-29 17:30:30 26 4
gpt4 key购买 nike

我有一个要求,所有记录在数据库中的日期都必须记录为UTC。到目前为止,我可以通过以下方法使用 Noda 库实现此目的:

    public static DateTime NowUtc(string timeZoneId)
{
var timeZone = GetTimeZone(timeZoneId);
var instant = SystemClock.Instance.Now;
return instant.InZone(timeZone).ToDateTimeUtc();
}

我将验证传递到数据访问层的每个日期都必须采用 UTC 格式。

我该如何实现?

谢谢

注意:我已经创建了一个使用 Noda 作为核心引擎的自定义类库,并将输出转换回 System.DateTime。

最佳答案

我不完全确定你在问什么,但这里有一些提示:

  • 如果您只需要“现在”作为 UTC DateTime,只需使用 DateTime.UtcNow

  • 如果您正在处理 Noda Time 瞬间并需要 DateTime,只需使用 instant.ToDateTimeUtc()。如果您只需要 UTC,那么使用时区是没有意义的。

  • 如果您想验证 DateTime 是否为 UTC,请检查类型:

    dateTime.Kind == DateTimeKind.Utc
  • 您的数据层可能会返回 DateTimeKind.Unspecified 类型的 DateTime,因此您需要先指定 UTC 类型,然后再转换为 Noda 时间 即时:

    DateTime dt = (DateTime) dataReader["YourDataField"];
    DateTime utc = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
    Instant instant = Instant.FromDateTimeUtc(utc);
  • 最后,认识到 UTC 不是一种格式。这是一个时间尺度。因此,一个值可以“调整为 UTC”或“类似 UTC”,但不能“采用 UTC 格式”。

关于c# - 验证 System.DateTime 是 UTC 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21374293/

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