C#中的ISO 8601时间格式化

780 阅读3分钟

在C#中,你可以使用以下代码将日期和时间格式化为 ISO 8601 格式:

DateTime dateTime = DateTime.Now; string iso8601DateTime = dateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz");

这将返回一个字符串,其中包含当前日期和时间的 ISO 8601 格式表示。具体来说,格式字符串"yyyy-MM-ddTHH:mm:ss.fffzzz"的含义如下:

  • "yyyy":四位数的年份
  • "MM":两位数的月份
  • "dd":两位数的日期
  • "T":日期和时间之间的分隔符
  • "HH":24小时制的小时数
  • "mm":分钟数
  • "ss":秒数
  • "fff":毫秒数
  • "zzz":时区偏移量(例如:+08:00)

请注意,这个代码使用了当前时间来示例,你可以根据需求来替换 DateTime.Now 来获取不同的日期和时间。

C# 2019-01-01T01:01:01Z(UTC时间) 在C#中,你可以使用以下代码将符合 ISO 8601 格式的日期时间字符串解析为相应的 DateTime 对象:

string iso8601DateTime = "2019-01-01T01:01:01Z"; DateTime dateTime = DateTime.ParseExact(iso8601DateTime, "yyyy-MM-ddTHH:mm:ssZ", null, DateTimeStyles.RoundtripKind);

这会将 ISO 8601 格式的字符串 "2019-01-01T01:01:01Z" 解析为一个 DateTime 对象,并将其存储在 dateTime 变量中。具体来说,ParseExact 方法使用了格式字符串 "yyyy-MM-ddTHH:mm:ssZ",它对应于 ISO 8601 格式的日期时间表示法。

请注意,这个示例假设输入字符串是 UTC 时间(以字符 'Z' 结尾)。如果输入字符串不是 UTC 时间,而是带有时区偏移量的本地时间,你需要使用带有时区信息的 DateTimeOffset 类型来处理。


              DateTime dateTime = DateTime.Now;
              string iso8601DateTime = dateTime.ToString("yyyy-MM-ddTHH:mm:sszzz");

在 C# 中,可以使用 DateTime 类型来表示日期和时间。要实现形如 "2023-04-19T13:09:24Z" 的时间类型,可以使用 DateTime.ParseExact 方法来解析该字符串,并指定相应的格式。

下面是一个示例代码,演示如何将字符串 "2023-04-19T13:09:24Z" 转换为 DateTime 类型:

string input = "2023-04-19T13:09:24Z";
DateTime dateTime = DateTime.ParseExact(input, "yyyy-MM-ddTHH:mm:ssZ", null);

在上述代码中,我们使用 DateTime.ParseExact 方法来解析字符串 input,指定了格式字符串 "yyyy-MM-ddTHH:mm:ssZ" 来匹配给定的时间格式。其中,格式说明符的含义如下:

  • yyyy: 4 位数的年份
  • MM: 2 位数的月份
  • dd: 2 位数的日期
  • T: 表示时间和日期的分隔符
  • HH: 2 位数的小时(24小时制)
  • mm: 2 位数的分钟
  • ss: 2 位数的秒钟
  • Z: 表示时区的标识符(表示 UTC 时间,即零时区)

如果解析成功,dateTime 变量将包含对应的 DateTime 对象,表示了 "2023-04-19T13:09:24Z" 这个时间。你可以根据需要对其进行进一步处理和操作。

需要注意的是,DateTime 对象默认会存储本地时间信息,而不是 UTC 时间。如果你需要将 DateTime 对象转换为 UTC 时间,可以使用 DateTime.ToUniversalTime 方法。

DateTime utcDateTime = dateTime.ToUniversalTime();

上述代码将把 dateTime 转换为 UTC 时间,并存储在 utcDateTime 中。