【问题标题】:C# DateTime - RFC 3339 formatC# 日期时间 - RFC 3339 格式
【发布时间】:2011-02-16 14:42:30
【问题描述】:

我正在尝试生成符合 RFC 3339 的日期字符串(即“2008-03-19T00:00:00.0000000-04:00”),但是我似乎遇到了偏移量无效的问题。我正在使用以下内容:

private string GetDate(DateTime DateTime)
{
    DateTime UtcDateTime = TimeZoneInfo.ConvertTimeToUtc(DateTime);
    return XmlConvert.ToString(UtcDateTime, XmlDateTimeSerializationMode.Utc);
}

但这会返回一个值,例如 "1977-02-03T05:00:00Z"

我也尝试过使用特定格式,例如

 utcDateTime.ToString("yyyy-MM-dd'T'HH:mm:ss.fffK", DateTimeFormatInfo.InvariantInfo); 

但结果相同。


请参阅此现有参考:How do I parse and convert DateTime's to the RFC 3339 date-time format?

【问题讨论】:

  • 您的UtcDateTime 是UTC,那您为什么期望时区不同于0?
  • @CodeInChaos - 我的理解是 2008-03-19T00:00:00.0000000-04:00 的 -04:00 代表 Utc 偏移量
  • 是的,因为您的 DataTime 使用 UTC 时区,所以您的 UTC 偏移量应该为 0。为此,RFC 指定了短符号 Z。至少那是我记得的。自从我阅读该 RFC 以来已经有一段时间了。

标签: c# .net datetime rfc3339


【解决方案1】:

您正在将数据转换为 UTC,因此其与 UTC 的时区偏移量为 0:00。 RFC 为 UTC 日期定义了一种方便的表示法,即后缀 Z。所以这对我来说看起来像是一个有效的数据字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    相关资源
    最近更新 更多