【问题标题】:How to get DateTime.Now() in YYYY-MM-DDThh:mm:ssTZD format using C# [duplicate]如何使用 C# 以 YYYY-MM-DDThh:mm:ssTZD 格式获取 DateTime.Now() [重复]
【发布时间】:2011-08-10 05:50:15
【问题描述】:

可能重复:
datetime to string with time zone

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

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

我正在使用以下代码来获取该格式的当前日期时间:

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

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

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

【问题讨论】:

  • DateTime.Now 甚至从未见过该参数。它是ToString 方法的参数。

标签: c# datetime


【解决方案1】:

使用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

【讨论】:

  • 你怎么可能有 24h mod 而我有 12h 模式?
  • 加一个用于提及文字冒号;人们往往会忘记: 代表当前格式提供者的时间分隔符。
  • 传递CultureInfo.InvariantCulture 是确保: 不被翻译的一种方法。它还确保使用公历 - 因为当前文化的日历也可能是别的东西。
  • @genesis 大写字母“HH”显示 24 小时制,小写字母“hh”显示 12 小时制。
【解决方案2】:

使用 zzz 代替 TZD

例子:

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

回复:

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

【讨论】:

    【解决方案3】:

    试试这个:

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

    zzz 是时区偏移量。

    【讨论】:

    • 有没有办法增加毫秒数?
    • 哦,是的!我找到了..:fff - 是几分之一秒。 code DateTime.Now.ToString("yyyy-MM-ddThh:mm:ss:fffzzz");
    猜你喜欢
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多