如何使用C#以YYYY-MM-DDThh:mm:ssTZD格式获取DateTime.Now()

时间:2011-08-09 21:44:50

标签: c# datetime

  

可能重复:
  datetime to string with time zone

这是我想在站点地图中使用的W3C标准日期时间格式之一。此DateTime标准是:

  

完成日期加上小时,分钟和秒:         YYYY-MM-DDThh:mm:ssTZD其中TZD =时区指示符(Z或+ hh:mm或-hh:mm)(例如1997-07-16T19:20:30 + 01:00)

我使用以下代码以该格式获取当前DateTime:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssTZD");

但这给出了:2011-08-10T02:27:20TZD

显然,DateTime.Now无法识别参数中的“TZD”。请帮忙。如何以这种格式获取当前的DateTime?

3 个答案:

答案 0 :(得分:49)

使用zzz格式说明符将时区偏移量设置为小时和分钟。您还希望使用HH格式说明符以24小时格式获取小时数。

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz")

结果:

2011-08-09T23:49:58+02:00

某些文化设置使用句点而不是冒号来表示时间,因此您可能希望使用文字冒号而不是时间分隔符:

DateTime.Now.ToString("yyyy-MM-ddTHH':'mm':'sszzz")

Custom Date and Time Format Strings

答案 1 :(得分:10)

使用zzz而不是TZD

示例:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz");

响应:

2011-08-09T11:50:00:02+02:00

答案 2 :(得分:3)

试试这个:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz");

zzz是时区偏移量。