Построение объекта DatetimeOffset на основе тиков, дающих неправильное значение - PullRequest
0 голосов
/ 22 января 2019

У меня есть DatetimeOffset значение, хранящееся как показано ниже в моей таблице базы данных:

2002-08-27 07:49:20.3190000 -11:00

Теперь вот как я записываю это значение в binary file:

DateTimeOffset d = "2002-08-27 07:49:20.3190000 -11:00";
BinaryWriter w ;
w.Write(d.Ticks);

Теперь, когда я пытаюсь прочитать это значение с помощью двоичного считывателя, он генерирует неправильно, как показано ниже, на основе Ticks:

BinaryReader r;
var dateTime = DateTime.FromBinary(r.ReadInt64());
return new DateTimeOffset(dateTime);

Вывод: 8/27/2002 7:49:20 AM +05:30

Как это происходит?

Как правильно построить точный объект DatetimeOffset на основе тиков?

1 Ответ

0 голосов
/ 22 января 2019

Вам необходимо сохранить как тики UTC, так и смещение часового пояса:

DateTimeOffset d = "2002-08-27 07:49:20.3190000 -11:00";
BinaryWriter w;
w.Write(d.Ticks);
w.Write(d.Offset.Ticks);

BinaryReader r;
var dateTime = new DateTime(r.ReadInt64());
var offset = new TimeSpan(r.ReadInt64());
return new DateTimeOffset(dateTime, offset);
...