Как конвертировать дату и время в двойной C # - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь преобразовать значение даты и времени из строки JSON в double в C #, но получаю сообщение об ошибке ниже. enter image description here

Ниже приведен код, который я пытаюсь отладить.

 DateTime baseDate = DateTime.SpecifyKind(DateTime.Parse("1970-01-01"), DateTimeKind.Utc);
 docRoot.scheduleDate = baseDate.AddSeconds((double)docRoot.scheduleDate);

Я понимаю, что говорит ошибка, но мне было труднонайти обходной путь. Я попробовал подход, описанный ниже, но безуспешно.

  1. Преобразование docRoot.scheduleDate в строку, затем попытка преобразовать строку в двойное число, используя Convert.ToDouble(stringScheduleDate). Единственная проблема заключается в том, что специальные символы в docRoot.scheduleDate («10/10/2019 08:29:30») вызывают ошибку формата.

Я считаю, что если я удалюспециальные символы, я решу проблему. Но мне интересно, есть ли другой подход к преодолению этого исключения?

Преобразование в строку с последующим удалением специальных символов, на мой взгляд, несколько неэффективно, поэтому, если кто-то захочет поделиться некоторыми другими идеями, я очень ценю это.

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Используйте DateTime.ToOADate для получения десятичного представления согласно https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tooadate и DateTime.FromOADate для десериализации.

0 голосов
/ 16 октября 2019

Вы должны быть в состоянии заставить тики удваиваться очень легко:

docRoot.scheduleDate = baseDate.AddSeconds((double)docRoot.scheduleDate.Second);

Я только что понял, что это был метод добавления секунд, он будет работать лучше ?

Также примечание,OADate также использует внутреннее свойство InternalTicks. Так что это также может вызвать проблемы.

...