1

在 ASP.NET 应用程序中,我需要在从远程服务器检索一些图像时检查修改日期。“Last-Modified”的标头值是如下字符串:

  • 2011 年 12 月 8 日星期四 19:57:12 G12T
  • 2003 年 8 月 14 日星期四 16:13:20 G8T

.NET 的DateTime.Parse()方法在这些上失败,并显示FormatException(“字符串未被识别为有效的日期时间。从索引 26 开始有一个未知单词。”)。我可以通过哪些选项来使(ny)解析方法识别那些时区指示符?我以前没有见过它们,谷歌搜索在论坛和类似网站上发现了一些明显的用法,但没有关于它们含义的有用信息。

(奇怪的是,相同图像上“日期”的标头值以“GMT”结尾。远程服务器是 IIS 7.5。)

4

1 回答 1

2

我现在无法轻松检查,但这可能有效:

DateTimeOffset result = DateTimeOffset.ParseExact(text,
    "ddd, dd MMM yyyy HH:mm:ss 'G'z'T'",
    CultureInfo.InvariantCulture);

那是使用z自定义说明符......它总是用一个符号格式化,但在解析时可能不需要一个符号。

如果您乐于使用最前沿的代码,我相信Noda Time 1.2(未发布)应该能够使用OffsetDateTimePattern. ddd, dd MMM yyyy HH:mm:ss 'G'o<-H>'T'同样,我现在无法测试它,但我希望它能够工作。这确实意味着使用当前未发布的代码运行......

于 2013-07-17T21:55:50.687 回答