Какой формат использует UWP DataWriter.WriteDateTime? - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь понять, как метод Windows.Storage.Streams.DataWriter.WriteDateTime UWP преобразует DateTimeOffset значения в байтовый массив. Я ожидал, что он будет работать аналогично TimeSpan, где Ticks преобразуется в байтовый массив. Удивительно, но это не так.

Например, для DateTimeOffset.MinValue последовательность байтов:

248, 254, 49, 232, 221, 137, 0, 0

А для DateTimeOffset.MaxValue это:

36, 200, 90, 94, 209, 192, 63, 255

Я попытался сравнить с выводом DateTime.ToBytes(), который дает гораздо более разумные результаты (например, MinValue дает все нули).

Может кто-то предложить или декодировать, какие логики c используется?

1 Ответ

0 голосов
/ 02 мая 2020

A Windows.Foundation.DateTime - это на самом деле int64 под одеялом, представляющее число интервалов в 100 наносекунд до или после полуночи 1 января 1601 года. Это похоже на структуру Windows FILETIME.

. Проекция. NET преобразует ее в / из структуры DateTimeOffset, включая любые преобразования данных в представление DateTimeOffset.

Более подробная информация - на MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...