【发布时间】: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 以来已经有一段时间了。