c# Как сериализовать DateTime с использованием YamlDo tNet, чтобы его можно было десериализовать? - PullRequest
0 голосов
/ 27 марта 2020

In. net Framework 4.8, я пытаюсь сериализовать через YamlDo tNet объект, который содержит поле DateTime, обычно создаваемое с помощью вызова DateTime.Now. Я использую пользовательский сериализатор для этого объекта, разделив его следующим значением ключа. Это создает действительный yaml, ведь я могу десериализовать.

session.StartTime.ToString(CultureInfo.InvariantCulture)

Yaml сгенерировал:

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

При десериализации я получаю объект DateTime с тем же годом, месяцем, днем, час и секунда, но галочки кажутся разными

637209323680070971 - на оригинале

637209323680000000 - на десериализованном:

Как я могу сериализовать / десериализовать так что 2 объекта одинаковы?

Мне не нужна точность, которую обеспечивают дополнительные тики, но я не знаю, как их удалить или как правильно решить эту ошибку

1 Ответ

1 голос
/ 28 марта 2020

Если вас не интересуют миллисекунды, вам не нужно ничего делать, так как анализируемое значение равно тому, что вы записали в YAML.

Если вам нужны миллисекунды, Вы можете использовать формат туда и обратно , "o":

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

По умолчанию YamlDo tNet будет использовать Convert.ChangeType для разбора дат, и этот метод принимает этот формат среди др.

...