c# 如何使用 YamlDotNet 序列化 DateTime 以便反序列化?
c# How to serialize DateTime using YamlDotNet so that it can be deserialized?
在 .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
- 在反序列化的那一个:
我怎样才能 serialize/deserialize 使两个对象相同?
我不需要额外刻度提供的准确性,但不知道如何删除它们或解决此错误的正确方法是什么
如果您不关心毫秒数,则无需执行任何操作,因为被解析的值等于您在 YAML 中写入的值。
如果需要毫秒,可以使用roundtrip format、"o"
:
session.StartTime.ToString("o", CultureInfo.InvariantCulture)
默认情况下,YamlDotNet 将使用 Convert.ChangeType
来解析日期,并且该方法接受该格式等。
在 .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
- 在反序列化的那一个:
我怎样才能 serialize/deserialize 使两个对象相同?
我不需要额外刻度提供的准确性,但不知道如何删除它们或解决此错误的正确方法是什么
如果您不关心毫秒数,则无需执行任何操作,因为被解析的值等于您在 YAML 中写入的值。
如果需要毫秒,可以使用roundtrip format、"o"
:
session.StartTime.ToString("o", CultureInfo.InvariantCulture)
默认情况下,YamlDotNet 将使用 Convert.ChangeType
来解析日期,并且该方法接受该格式等。