Как преобразовать байт[] в datetime в C#?
У меня есть поле типа TimeStamp в базе данных, которое преобразуется в byte[] в коде c#, и мне нужно преобразовать его в значение DateTime. Поэтому я хочу преобразовать из массива байтов в DateTime.
уже использовал этот код:
byte[] byteValue = someValue;
long longVar = BitConverter.ToInt64(byteValue);
DateTime dateTimeVar = DateTime.FromBinary(longVar);
это нормально?
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);
столбец timestamp в SQL Server (теперь называется rowversion) не конвертируется в значение datetime - это чисто монотонно возрастающее значение, назначенное сервером.