【问题标题】:How to parse an HTTP Last-Modified header from UTC to DateTime in C#如何在 C# 中将 HTTP Last-Modified 标头从 UTC 解析为 DateTime
【发布时间】:2013-10-02 20:41:41
【问题描述】:

我正在尝试从 HTTP 响应中的 Last-Modified 标头解析日期。

日期显示如下:

最后修改时间:2006 年 7 月 1 日星期六 01:50:55 UTC

我尝试了 DateTime.ParseDateTime.ParseExact 没有成功。

最后那个 UTC 是什么,为什么 C# 不想解析它?

更新:

  • 我请求的服务器是 PWS/8.0.16,它(我认为)是 Windows Personal Web Server...这台服务器可能是罪魁祸首。 (我很想知道这个服务器是什么)
  • 数据由 jpeg 图像组成。
  • Last-Modified 标头的日期格式似乎并不总是相同。有时,它以 UTC 结尾。其他有 GMT。

【问题讨论】:

  • KavenG - 如果答案对您有帮助 - 请点赞。如果是解决方案 - 赞成 + 更新)
  • 此标头值似乎不正确。这里不需要“UTC”,只有“GMT”,w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1(它是 rfc1123 日期)。如果正确,您可以使用DateTime.ParseExact(text, "r", null)
  • keyboardP 链接的问题回答了问题,但场景不同。我们应该保留两者,因为这个更详细和具体?

标签: c# http http-headers utc


【解决方案1】:

使用ParseExact指定输入格式:

string inputDate = "Sat, 01 Jul 2006 01:50:55 UTC";

DateTime time = DateTime.ParseExact(inputDate,
                    "ddd, dd MMM yyyy HH:mm:ss 'UTC'",
                    CultureInfo.InvariantCulture.DateTimeFormat,
                    DateTimeStyles.AssumeUniversal);

【讨论】:

猜你喜欢
  • 2010-12-28
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 2017-09-06
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多