Я работаю в C # с некоторыми иностранными данными и пытаюсь получить время и дату из базы данных. Я дважды изменил время, чтобы увидеть, какие байты изменились в файле, и нашел 2 места, где данные были обновлены. Первый набор - 7 байтов, второй - 5.
Глядя на байты, связанные с тысячами записей, я могу сказать, что последний байт в блоке 7 всегда равен 64
, все байты в группе из 5 различаются.
Кто-то сказал мне, что начальная дата начала была 01.01.1850, я еще не смог проверить это. Здесь я переместил время на 30 минут:
Original Time 11:45 01/02/2006
New Time 12:15 01/02/2006
94 DE 94 DE 9C 03 64 00 65
First Set:
Original:94 DE 94 DE 9C 03 64
New: 94 DE 94 DE 85 03 64
Second Set:
Original:94 DE BF 04 05
New: 94 DE 79 04 05
Затем я переместил его обратно в 11:45, но перевел на 24 часа:
Original Time 11:45 01/02/2006
New Time 11:45 01/03/2006
First Set:
Original:94 DE 94 DE 9C 03 64
New: 94 DE 94 DE 8B 03 64
Second Set:
Original:94 DE 79 04 05
New: 95 DE 79 04 05
Я пытался преобразовать каждый из них, но безуспешно, и я не мог найти где-нибудь, что 5 или 7 байт являются «нормой» для использования обычных инструментов
//94 DE 94 DE 9C 03 64
//{ 148, 222, 148, 222, 156, 3, 100, 0, } //this fails unless you set last 2 to 0
//94 DE 79 04 05
//{ 148, 222, 121, 4, 5, 0, 0, 0, };
byte[] timestamp = new byte[] { 148, 222, 121, 4, 5, 0, 0, 0, };
DateTime Epoch = new DateTime(1850, 1, 1, 0, 0, 0, DateTimeKind.Utc);
ulong milliseconds = BitConverter.ToUInt64(timestamp, 0);
var result = Epoch + TimeSpan.FromMilliseconds(milliseconds);
Console.WriteLine(result.ToString());
//outputs 9/7/1850 10:05:32 AM