gpt4 book ai didi

.net - 如何解析 DateTime 并将其转换为 RFC 822 日期时间格式?

转载 作者:行者123 更新时间:2023-12-03 07:30:58 24 4
gpt4 key购买 nike

如何将 DateTime 结构转换为其等效结构 RFC 822 date-time格式化字符串表示将此字符串表示解析回 .NET 中的 DateTime 结构? RFC-822 日期时间格式用于许多规范,例如 RSS Syndication Format .

最佳答案

试试这个:

  DateTime today = DateTime.Now;
String rfc822 = today.ToString("r");
Console.WriteLine("RFC-822 date: {0}", rfc822);

DateTime parsedRFC822 = DateTime.Parse(rfc822);
Console.WriteLine("Date: {0}", parsedRFC822);

传递到 DateTime 的 ToString() 方法的“r”格式说明符实际上会生成 RFC-1123 格式的日期时间字符串,但也会作为 RFC-822 日期传递,基于阅读 http://www.w3.org/Protocols/rfc822/#z28 中找到的规范。 。我在创建 RSS 源时使用了此方法,并且它们根据 http://validator.w3.org/feed/check.cgi 上提供的验证器通过了验证。 。

缺点是,在转换中,它将日期时间转换为 GMT。要转换回本地时间,您需要应用本地时区偏移量。为此,您可以使用 TimeZone 类来获取当前时区偏移量,并将“GMT”替换为时区偏移量字符串:

TimeZone tz = TimeZone.CurrentTimeZone;

String offset = tz.GetUtcOffset().ToString();
// My locale is Mountain time; offset is set to "-07:00:00"
// if local time is behind utc time, offset should start with "-".
// otherwise, add a plus sign to the beginning of the string.
if (!offset.StartsWith("-"))
offset = "+" + offset; // Add a (+) if it's a UTC+ timezone
offset = offset.Substring(0,6); // only want the first 6 chars.
offset = offset.Replace(":", ""); // remove colons.
// offset now looks something like "-0700".
rfc822 = rfc822.Replace("GMT", offset);
// The rfc822 string can now be parsed back to a DateTime object,
// with the local time accounted for.
DateTime new = DateTime.Parse(rfc822);

关于.net - 如何解析 DateTime 并将其转换为 RFC 822 日期时间格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com