簡體   English   中英

c#如何將日期時間轉換為4個字節的字節數組

[英]c# how to convert a datetime to byte array of 4 bytes

我嘗試將其轉換為字節數組,但創建的最小字節數組為 5。 但是對於這個日期時間,我只有 4 個字節作為字節存儲在我的字節數組中。

代碼是這樣的:

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

但是getbytes(t.ticks)返回 8 個字節的數組。 我以某種方式希望它只轉換為 4 個字節。

您可以使用 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));

將當前時間轉換為 64 位 unix 時間,然后手動將 64 位時間轉換為 32 位時間(准備好面對 2038 年的問題。)。

有關執行此操作的想法,請參見 SO 討論:

其他參考資料:

嘗試使用此代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM