Как преобразовать байт [] в дату и время в C#?

У меня есть поле типа TimeStamp в базе данных, которая преобразовывается в байте [] в коде c#, и я должен преобразовать его в значение DateTime. Таким образом, я хочу преобразовать из массива байтов в DateTime.

Уже используемый этот код:

byte[] byteValue = someValue;
long longVar = BitConverter.ToInt64(byteValue);
DateTime dateTimeVar = DateTime.FromBinary(longVar);

это в порядке?

10
задан Damien_The_Unbeliever 16 February 2010 в 18:40
поделиться

2 ответа

Нет, это не так.

Метод FromBinary принимает длинное значение, которое создается с помощью метода ToBinary . Он содержит компоненты Kind и Ticks , и это не то, что содержит временная метка базы данных.

Использование BitConverter для получения длинного значения является правильным, но тогда вы должны взять начало отсчета времени для метки времени и добавить длинное значение в качестве правильной единицы. Предполагая, что это метка времени из базы данных MySQL, IIRC - это количество миллисекунд с 1980-01-01:

long longVar = BitConverter.ToInt64(byteValue, 0);
DateTime dateTimeVar = new DateTime(1980,1,1).AddMilliseconds(longVar);
7
ответ дан 3 December 2019 в 19:32
поделиться

Столбец отметки времени в SQL Server (теперь называется rowversion) не может быть преобразован в значение datetime - это просто монотонно увеличивающееся значение, присваиваемое сервером.

13
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: