C# 如何将int转换为datetime?

C# 如何将int转换为datetime?,c#,C#,我有一个使用以下公式转换为int的日期: var i = date.Year * 65536 + date.Month * 256 + date.Day; 如何将整数转换回日期?这个公式用整数的第一、第二和第三个字节来表示日期、月份和年份。因此,您基本上只需要获取这些字节并从中创建日期时间: var date = DateTime.Now; var i = date.Year * 65536 + date.Month * 256 + date.Day; var dt = new DateTim

我有一个使用以下公式转换为int的日期:

var i = date.Year * 65536 + date.Month * 256 + date.Day;

如何将整数转换回日期?

这个公式用整数的第一、第二和第三个字节来表示日期、月份和年份。因此,您基本上只需要获取这些字节并从中创建日期时间:

var date = DateTime.Now;
var i = date.Year * 65536 + date.Month * 256 + date.Day;
var dt = new DateTime(i >> 16, i >> 8 & 0xFF, i & 0xFF);

这似乎是在使用
int
的不同位来存储日期。最重要的16位是年份。之后的8位是月,最低有效8位是日

因此,您可以使用位运算来获取年、月和日:

uint unsigned = (uint)i; // cast to uint because we don't want to do an arithmetic shift
uint year = unsigned >> 16;
uint month = (unsigned >> 8) & 0xff;
uint day = unsigned & 0xff;
事实上,
i
也可以使用位运算进行计算:

var i = date.Year << 16 | date.Month << 8 | date.Day;

var i=date.Year两种方式使用位运算会更有意义
var i=(date.Year>8&0xFF
i&0xFF
。@通用的解决方案更干净!