[英]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.