gpt4 book ai didi

c# - DateTimeStyles.RoundtripKind 枚举是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 08:38:04 32 4
gpt4 key购买 nike

我正在阅读这个答案 here我在哪里遇到这个枚举值 DateTimeStyles.RoundtripKind。我现在正在努力理解它。我查看了 MSDN 文档 here其中说:

The DateTimeKind field of a date is preserved when a DateTime objectis converted to a string using the "o" or "r" standard formatspecifier, and the string is then converted back to a DateTime object.

我在上一段中提到的帖子中 input 变量指向的时间戳如下:

<timestamp time='2016-09-16T13:45:30'>

我运行了她的代码,它成功了。现在关联我拥有的所有信息变得有点困惑:

  1. 上面的时间戳包含一些标识符T

  2. MSDN 文档讨论了 or 格式说明符,但没有说明它是什么?

  3. 如果您在上面引用的 MSDN 链接上深入了解有关 DateTimeKind 枚举的更多详细信息,它不会提及 or 格式说明符。 Here是链接,上面写着:

    Member Name   |  Description
    --------------------------------------------------------------------------------

    Local | The time represented is local time.

    Unspecified   |  The time represented is not specified as either local time or Coordinated Universal Time (UTC).

    Utc           |      The time represented is UTC.

那么有人可以帮助我理解 DateTimeStyles.RoundtripKind 枚举及其工作原理吗?

最佳答案

所以我终于能够理解这一点并在这里分享相同的信息,如果它对其他人也有帮助的话:

第一部分是将 C# DateTime 对象转换为字符串。有许多格式说明符可以做到这一点,但对于我们来说,ro 格式说明符是我们关心的关于 DateTimeStyles.RoundtripKind 的问题。您可以看到所有日期时间格式说明符 here .看看当我们使用这些格式说明符在代码中进行转换时会发生什么:

//r corresponds to RFC 1123 format (GMT date time format)
var gmtDateTimeString = DateTime.Now.ToString("r"); //gives Fri, 23 Sep 2016 15:39:21 GMT

//o corresponds to ISO 8601 (Local date time format)
var localDateTimeString = DateTime.Now.ToString("o"); //gives 2016-09-23T15:39:21.8899216+05:30

您可以清楚地看到输出的字符串日期时间中嵌入了信息,这表明:

  • 2016 年 9 月 23 日星期五 15:39:21 GMTDateTimeKind.Utc(存在 GMT 文本)
  • 2016-09-23T15:39:21.8899216+05:30 表示 DateTimeKind.Local 的日期时间(T 字符存在根据 ISO 8601 标准)

现在是第二部分。如果我必须将存储在 gmtDateTimeStringlocalDateTimeString 中的日期时间字符串转换回日期时间对象,那么我们需要解析它们。因此,在传递给 DateTime.Parse API 的 DateTimeStyles.RoundtripKind 枚举值的帮助下,您实际上表示时区信息已经包含在字符串中,并且 API 会适本地解析日期时间使用该信息。

通常,当日期时间数据以 XML 格式通过线路传输时,将使用 ISO 8601 格式,我在该帖子中发布问题之前在我提到的帖子中看到了这种格式。因此,在解析从 XML 文档中获取的此类日期时间字符串时,可以根据字符串中存在的时区信息使用 DateTimeStyles.RoundtripKind 来获取正确的日期时间值。

关于c# - DateTimeStyles.RoundtripKind 枚举是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39572395/

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