c#如何将datetime转换为4字节的字节数组

use*_*083 4 c#

我尝试将其转换为字节数组,但最小字节数组为5.但是我只有4个字节用于此日期时间,以字节形式存储在我的字节数组中.

代码是这样的:

byte[] b = new byte[] {10,12,12,12};
DATETIME t=datetime.now();
array.copy(BitConverter.GetBytes(t.ticks),1,b,4);
Run Code Online (Sandbox Code Playgroud)

但是getbytes(t.ticks)返回8个字节的数组.我不知何故希望它只转换为4个字节.

cah*_*yaz 7

您可以使用32位unix时间.但要注意2038年的问题.您可以在下面找到示例解决方案 其中以4个字节存储日期时间.

        byte[] b = new byte[] { 10, 12, 12, 12 };
        DateTime now = DateTime.Now;
        var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
        var csMinDate = DateTime.MinValue;
        TimeSpan tsEpoch = now - epoch;
        int passedSecods = (int)tsEpoch.TotalSeconds;
        byte[] copyBytes = BitConverter.GetBytes(passedSecods);
        Array.Copy(copyBytes, 0, b, 0, 4);
        DateTime tCompare = epoch.AddSeconds(BitConverter.ToInt32(b, 0));
Run Code Online (Sandbox Code Playgroud)


Fer*_*tol -1

尝试使用以下代码:

byte[] b = new byte[] { 10, 12, 12, 12 };
DateTime t = DateTime.Now;
Array.Copy(BitConverter.GetBytes(t.Ticks), 0, b, 0, 4);
Run Code Online (Sandbox Code Playgroud)