9

我看到有两种类型的可排序日期时间模式我可以格式化我的字符串......

  1. SortableDateTimePattern 输出一个在日期和时间中间有一个 T 的值
  2. UniversalSortableDateTimePattern 在时间之后输出一个最后带有 Z 的值

在进程间通信(例如 JSON、XML 或表格数据中的数据交换)方面,每种方法的含义是什么。

两者中的任何一个是否有机会自动调整为UTC?(乍一看好像不是)

我已经阅读了 MSDN 上关于这两个方面的低水平文档,遗憾的是他们对这个问题没有提供任何见解......

4

2 回答 2

6

UniversalSortableDateTimePattern使用 UTC。这就是最后的Z的用途。

试试这个简单的示例:

string s = DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.SortableDateTimePattern);
DateTime d = DateTime.Parse(s);

Console.WriteLine(s);
Console.WriteLine(d);

Console.WriteLine();

s = DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.UniversalSortableDateTimePattern);
d = DateTime.Parse(s);

Console.WriteLine(s);
Console.WriteLine(d);

只要您的时区不是 UTC+0,您就会注意到第二个区块的时间不同。

我对此的阅读将是UniversalSortableDateTimePattern跨时区使用时更喜欢。

于 2012-11-19T16:12:29.770 回答
1

SortableDateTimePattern 取决于文化,不包括时区偏移信息。UniversalSortableDateTimePattern 与文化无关,在任何计算机、任何地方都相同,并且包括时区偏移。偏移量来自 UTC,因此从时间中适当添加或减去它将为您提供 UTC 时间。如果您将使用多个时区和/或国籍,通常最好使用 UniversalSortableDateTimePattern。

但是,如果您总是希望您的时间是 UTC,则在转换为字符串之前使用适当的 DateTime 属性或方法要简单得多,即DateTime.UtcNow属性以 UTC 或现有 DateTime 获取当前日期和时间,DateTime.ToUniversalTime 方法

于 2012-11-19T16:50:54.543 回答