protobuf-net:日期时间的编码
Posted
技术标签:
【中文标题】protobuf-net:日期时间的编码【英文标题】:protobuf-net: Encoding for DateTime 【发布时间】:2016-02-05 19:46:37 【问题描述】:我正在使用 Python protobuf 库来读取使用 protobuf-net 的 .Net 应用程序发送的消息。 .Net 应用程序发送 DateTime。日期时间编码似乎并不简单,我不知道如何解析它。 有人知道 protobuf-net 库中 DateTime 的格式吗?
【问题讨论】:
【参考方案1】:如果我重新做一遍,我会做得更简单 - 我 可能仍会添加一个选项以使其更简单!但是:
bcl.proto
基本上,它选择正确的比例来保证价值。所以你只需要在.scale
的基础上对.value
做一些乘法。
【讨论】:
我可以建议使用与HTTP协议相同的格式吗?像 RFC 822,由 RFC 1123 更新 @efficks 我们为什么要这样做? HTTP 是一种文本协议... protobuf:不是。坦率地说,“[epoch] 中的[interval]”更常见——例如,unix 时间戳或毫秒等价物。 因为您的库需要与其他语言和库兼容。将来有人检查时,如果您的库已弃用,他仍然需要能够读取数据。使用 epoch 也很好,但是哪个。 UNIX?您在 .net 中的 Windows 上。在 .net 时代是 0001-01-01T00:00:00。那么使用哪一个呢?用字符串,你确定。另一种选择是完全停止支持日期时间,让用户根据需要对其进行编码并按照他的意愿进行记录。像这样,没有人需要打开 protobuf 库中的源代码来了解它的作用。 @efficks unix 时间非常标准;我不认为这是一个问题。但是,不合时宜:protobuf(规范,而不是 protobuf-net)没有 预定义的日期/时间表示,所以 每个人 都必须想出一些办法。 Unix 时间是一个很常见的选择,但如果你想控制你可以做许多其他 protobuf 用户需要做的事情,并以你选择的任何类型和含义编写成员 - 有些有string TheTime
或 long TheTime
等以上是关于protobuf-net:日期时间的编码的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 ProtoBuf-net 使用 DateTimeKind 选项序列化 DateTime 字段
为啥我的代码中的 protobuf-net 反序列化器比流式读取 csv 慢得多