将十六进制值从 SQL 服务器转换为 C# 中的日期时间

Convert hex value from SQL Server to datetime in C#

我需要将 8 个字节从十六进制值转换为 C# 中的新日期时间。该功能应该与 SQL 服务器中的功能相同。

我将十六进制值作为字符串“0000AC0500000000”或字节列表:

["0", "0", "172", "5", "0", "0", "0", " 0 ",]

从中我需要获取日期“2020-07-27 00:00:00:000”。 SQL 服务器的转换工作完美,只需 8 个字节即可恢复到毫秒。如图convert function in SQL Server

使用以下内容

            string input = "0000AC0500000000";

            int daysFrom1900 = int.Parse(input.Substring(0,8),NumberStyles.HexNumber);
            int ticksFromMidnight = int.Parse(input.Substring(8), NumberStyles.HexNumber);
            DateTime year1900 = new DateTime(1900, 1, 1);
            DateTime date = year1900.AddDays(daysFrom1900).AddTicks(ticksFromMidnight*(10/3.0));