HTTP响应标头,"过期"格式

dbo*_*ski 18 c# http-headers

我在C#中设置此行:

WebOperationContext.Current.OutgoingResponse.Headers.Add(HttpResponseHeader.Expires, DateTime.Now.AddSeconds(10).ToString());
Run Code Online (Sandbox Code Playgroud)

现在我知道格式是关闭的,因为它预计如下:星期二,2011年12月6日20:24:15 GMT

是否有一个.NET实现的类IFormatProvider我可以在这里利用?或者我需要创建自己的?

Jon*_*nno 34

我用 DateTime.UtcNow.AddDays(30).ToString("R")

来自MSDN:

"R"或"r"标准格式说明符表示由DateTimeFormatInfo.RFC1123Pattern属性定义的自定义日期和时间格式字符串.该模式反映了已定义的标准,并且该属性是只读的.因此,无论使用何种文化或提供格式提供程序,它始终是相同的.自定义格式字符串是"ddd,dd MMM yyyy HH':​​'mm':'ss'GMT'".使用此标准格式说明符时,格式化或解析操作始终使用不变文化


Mik*_*keM 14

您可以使用自定义日期和时间格式字符串.

星期二,2011年12月6日20:24:15 GMT

像这样生成上面的格式:

DateTime.Now.AddDays(30).ToUniversalTime()
    .ToString("ddd, dd MMM yyyy HH:mm:ss 'GMT'");
Run Code Online (Sandbox Code Playgroud)

  • 请注意,此代码不受文化不敏感,并将使用服务器区域设置格式化日期.你应该使用`thedate.ToString("R")`或`thedate.ToString("ddd,dd MMM yyyy HH:mm:ss'GMT'",DateTimeFormatInfo.InvariantInfo)` (11认同)
  • 正如史蒂夫·B(Steve B)以及乔诺(Jonno)的[答案](http://stackoverflow.com/a/17079611/361762)所建议的那样,格式字符串“ R”是实现此目的的最佳方法。例如`DateTime.UtcNow.AddDays(30).ToString(“ R”)` (3认同)