【问题标题】:c# How to serialize DateTime using YamlDotNet so that it can be deserialized?c# 如何使用 YamlDotNet 序列化 DateTime 以便可以反序列化?
【发布时间】:2020-03-27 18:25:35
【问题描述】:

在 .net Framework 4.8 中,我尝试通过 YamlDotNet 序列化包含 DateTime 字段的对象,该字段通常通过 DateTime.Now 调用创建。 我为该对象使用了一个自定义序列化程序,并使用以下作为键的值进行序列化。这会产生一个有效的 yaml,我可以反序列化。

session.StartTime.ToString(CultureInfo.InvariantCulture)

Yaml 生成:

StartTime: 03/27/2020 18:59:27

反序列化时,我得到一个 DateTime 对象,它具有相同的年、月、日、小时和秒,但刻度似乎不同

637209323680070971 - 原版

637209323680000000 - 反序列化的:

我怎样才能序列化/反序列化它以使两个对象相同?

我不需要额外刻度提供的准确性,但不知道如何删除它们或解决此错误的正确方法是什么

【问题讨论】:

    标签: c# .net yamldotnet


    【解决方案1】:

    如果你不关心毫秒,你不需要做任何事情,因为被解析的值等于你在 YAML 中写入的值。

    如果需要毫秒,可以使用roundtrip format"o"

    session.StartTime.ToString("o", CultureInfo.InvariantCulture)
    

    默认情况下,YamlDotNet 将使用 Convert.ChangeType 来解析日期,并且该方法接受该格式以及其他格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      相关资源
      最近更新 更多