- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在 Web 服务中实现条件请求。后端可以轻松检索实体的最后修改日期,因此我发送 Last-Modified 并返回 If-Modified-Since。 RFC for HTTP Dates指定与 "R" format specifier in .NET 相同的格式.
问题是 DateTime.ToString("R")
正确地格式化了日期,但是将 "R"
传递给 ParseExact
却没有t 读回时区(有一个“往返”说明符,“O”
,但它不是我需要的格式)。下面是 LinqPad 中的示例:
DateTime lastModified = new DateTime(2015, 10, 01, 00, 00, 00, DateTimeKind.Utc);
string lastModifiedField = lastModified.ToString("R"); // Thu, 01 Oct 2015 00:00:00 GMT
DateTime ifModifiedSince = DateTime.ParseExact(
lastModifiedField, "R", CultureInfo.InvariantCulture);
ifModifiedSince.Kind.Dump(); // Unspecified
我当然可以在已解析的 DateTime
上使用方法将其强制为我想要的格式,但我如何才能让框架使用已经存在的数据?
最佳答案
我偶然发现了解释这一点的引用资料,因此提出并回答了我自己的问题。
source to datetimeparse.cs表示这是一个无法修复兼容性的错误。
// The "r" and "u" formats incorrectly quoted 'GMT' and 'Z', respectively. We cannot
// correct this mistake for DateTime.ParseExact for compatibility reasons, but we can
// fix it for DateTimeOffset.ParseExact as DateTimeOffset has not been publically released
// with this issue.
因此,此注释之前的代码由 DateTime.ParseExact 和 DateTimeOffset.ParseExact 调用,并且实际上表明 DateTimeOffset.ParseExact 更正确。事实上,根据 choosing between DateTime and DateTimeOffset 上的文档:
These uses for DateTimeOffset values are much more common than those for DateTime values. As a result, DateTimeOffset should be considered the default date and time type for application development.
因此理想的解决方案是切换到 DateTimeOffset,但如果您仍然需要 DateTime:
DateTime lastModified = new DateTime(2015, 10, 01, 00, 00, 00, DateTimeKind.Utc);
string lastModifiedField = lastModified.ToString("R");
DateTimeOffset ifModifiedSinceOffset = DateTimeOffset.ParseExact(
lastModifiedField, "R", CultureInfo.InvariantCulture);
DateTime ifModifiedSince = ifModifiedSinceOffset.UtcDateTime;
ifModifiedSince.Kind.Dump(); // Utc
它正确地将时区标识为 GMT/UTC,从而在 DateTime 上设置了正确的属性。
关于c# - 为什么不 DateTime.ToString ("R") 和 DateTime.TryParseExact 往返?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33046257/
考虑以下示例: >>> from IPython.core.inputtransformer2 import TransformerManager >>> src = """\ ... foo = !
所以我构建 Django 应用程序已经有一段时间了,喝了很酷的东西:只使用 ORM,从不编写自定义 SQL。 一旦您拥有大量用户特定内容(即照片、 friend 、其他数据等),网站的主页(用户将花费
我想使用 Excel 的 XML Map Web 应用程序中来自服务器端 C# 的功能。 XML 映射使您能够将 XML 架构与工作簿相关联,并指定哪些单元格映射到架构的哪些部分。您可以从那里导入 X
Closed. This question needs to be more focused。它当前不接受答案。
我有一个简单但具有挑战性的算法问题要解决。 我有一个交易员 - 股票 - 日级别的数据集,我想识别数据中的往返行程。往返只是数据中的特定序列。也就是说,如果您随着时间的推移累积个人 i 的股票 s 持
是否有一种可靠的方法可以将 HTTP cookie 值精确往返一次? 例如 Set-Cookie: name=value; Max-Age=1; ...但 Max-Age 以增量秒为单位而不是 #re
随着 Swift 3 倾向于 Data而不是 [UInt8] ,我试图找出将各种数字类型(UInt8、Double、Float、Int64 等)编码/解码为 Data 对象的最有效/惯用方法。 有th
我有一个具有以下结构的小部件(它是“计划选择器”简历): 我的指令如下: plans.directive('resume', function()
我们观察到所有消息的 RTT Kafka 延迟较高。 这是我们的实际配置: 我们有 3 个 Kafka 代理 + 3 个 Zookeeper 在 EC2 服务器上的 Kubernetes 集群中运行
使用 Newtonsoft.Json 库,想象一下 public class Test { public Object Obj { get; set; } } 现在,尝试像这样序列化它 var
这里和网络上有很多文章,但这些文章都针对不同的 Objectify 版本,并且由于某种原因似乎不起作用。 我有一个实体,它引用另一个实体(例如,帐户实体引用用户实体): @Cache @Entity
问题:当 SubSonic 对象通过 Windows Communication Foundation 服务来回发送时,如何保留它们的“脏”? 即: 我有一个返回 SubSonic (2.2) 对象集
我想使用 golang 的 xml.MarshalIndent() 快速创建一个实用程序来格式化任何 XML 数据 但是this code package main import ( "enc
我需要有关子流程模块的帮助。这个问题听起来可能是重复的,而且我已经在很多方面看到过很多与之相关的文章。但即便如此我也无法解决我的问题。其过程如下: 我有一个C程序2.c,其内容如下: #include
在尝试创建一些 FFI 帮助程序代码时,我对 Box 这种看似简单的用法感到头疼。 当与具有字段的结构一起使用时,此处的示例似乎给出了 free(): invalidpointer 错误。 pub s
我有两个函数用于在 Blob 和字节数组之间进行转换: function arrayToBlob(data) { return new Blob(data); } function blobT
我一直在尝试将带有 INTO OUTFILE 的 mysql 表导出为 CSV 以便在 Excel 中进行编辑,然后使用 LOAD DATA INFILE 插入回 mysql。 我可以导出 ok,甚至
我正在 Web 服务中实现条件请求。后端可以轻松检索实体的最后修改日期,因此我发送 Last-Modified 并返回 If-Modified-Since。 RFC for HTTP Dates指定与
我正试图找到一种方法来完成 xsd 模式到数据存储区的往返,而工作量最小。 我使用 jaxb 从模式构建我的对象模型,现在我想基于 JPA(或 JDO 或其他?)存储这些对象。是否可以根据 JAXB
我正在使用 DataAnnotations、jQuery.validate 和 jquery.validate.unobtrusive 创建一个日期范围验证器。我已经阅读了以下内容: http://b
我是一名优秀的程序员,十分优秀!