日期整数表示法(精确到分)

摘要:
最近使用Lucene.NET做日期字段排序,使用Lucene.NET的日期转换函数生成的Long类型数据只能使用String比较方式,但使用Int方式拥有更高的效率,所以编写了此函数,只能精确到分钟,对日期精度要求高的场合就没办法了,见代码:/**////2{7publicconstintDEFAULTYEAR=1900;8/**////9///将日期转换成整数

最近使用Lucene.NET做日期字段排序,使用Lucene.NET的日期转换函数生成的Long类型数据只能使用String比较方式,但使用Int方式拥有更高的效率,所以编写了此函数,只能精确到分钟,对日期精度要求高的场合就没办法了,见代码:

/**////<summary>2日期整数表示法(精确到分)第1张{
7日期整数表示法(精确到分)第2张publicconstintDEFAULTYEAR=1900;
8日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张/**////<summary>9日期整数表示法(精确到分)第2张///将日期转换成整数(精确到分),日期从1900年1月1日00:00开始到2156年12月31日53:59结束
10日期整数表示法(精确到分)第2张///</summary>11日期整数表示法(精确到分)第2张///<paramname="datetime"></param>12日期整数表示法(精确到分)第8张///<returns></returns>

13日期整数表示法(精确到分)第2张publicstaticintToInt32(DateTimedatetime)
14日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
15日期整数表示法(精确到分)第2张//使用28位表示一个日期16日期整数表示法(精确到分)第2张BitArraybitArray=newBitArray(28);
17日期整数表示法(精确到分)第2张bool[]boolArray;
18日期整数表示法(精确到分)第2张//获取并设置分钟(分钟占6bit)19日期整数表示法(精确到分)第2张byteminute=(byte)datetime.Minute;
20日期整数表示法(精确到分)第2张boolArray=Convert(minute,6);
21日期整数表示法(精确到分)第2张for(inti=0;i<6;i++)
22日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
23日期整数表示法(精确到分)第2张bitArray[i]=boolArray[i];
24日期整数表示法(精确到分)第8张}
25日期整数表示法(精确到分)第2张//获取并设置小时(小时占5bit)26日期整数表示法(精确到分)第2张bytehour=(byte)datetime.Hour;
27日期整数表示法(精确到分)第2张boolArray=Convert(hour,5);
28日期整数表示法(精确到分)第2张for(inti=0;i<5;i++)
29日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
30日期整数表示法(精确到分)第2张bitArray[i+6]=boolArray[i];
31日期整数表示法(精确到分)第8张}
32日期整数表示法(精确到分)第2张//获取并设置日(日占5bit)33日期整数表示法(精确到分)第2张byteday=(byte)datetime.Day;
34日期整数表示法(精确到分)第2张boolArray=Convert(day,5);
35日期整数表示法(精确到分)第2张for(inti=0;i<5;i++)
36日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
37日期整数表示法(精确到分)第2张bitArray[i+11]=boolArray[i];
38日期整数表示法(精确到分)第8张}
39日期整数表示法(精确到分)第2张//获取并设置月(月占4bit)40日期整数表示法(精确到分)第2张bytemonth=(byte)datetime.Month;
41日期整数表示法(精确到分)第2张boolArray=Convert(month,4);
42日期整数表示法(精确到分)第2张for(inti=0;i<4;i++)
43日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
44日期整数表示法(精确到分)第2张bitArray[i+16]=boolArray[i];
45日期整数表示法(精确到分)第8张}
46日期整数表示法(精确到分)第2张//获取并设置年(年占8bit)47日期整数表示法(精确到分)第2张intyear=datetime.Year;
48日期整数表示法(精确到分)第2张year=year-DEFAULTYEAR;
49日期整数表示法(精确到分)第2张boolArray=Convert(year,8);
50日期整数表示法(精确到分)第2张for(inti=0;i<8;i++)
51日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
52日期整数表示法(精确到分)第2张bitArray[i+20]=boolArray[i];
53日期整数表示法(精确到分)第8张}
54日期整数表示法(精确到分)第2张returnToInt32(bitArray);
55日期整数表示法(精确到分)第8张}
56日期整数表示法(精确到分)第2张publicstaticDateTimeToDateTime(intdatetime)
57日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
58日期整数表示法(精确到分)第2张byte[]bytes=BitConverter.GetBytes(datetime);
59日期整数表示法(精确到分)第2张//日期60日期整数表示法(精确到分)第2张BitArraybitArray=newBitArray(bytes);
61日期整数表示法(精确到分)第2张BitArraybits;
62日期整数表示法(精确到分)第2张//获取并设置分钟(分钟占6bit)63日期整数表示法(精确到分)第2张bits=CopyTo(bitArray,0,6);
64日期整数表示法(精确到分)第2张byteminute=ToByte(bits);
65日期整数表示法(精确到分)第2张//获取并设置小时(小时占5bit)66日期整数表示法(精确到分)第2张bits=CopyTo(bitArray,6,5);
67日期整数表示法(精确到分)第2张bytehour=ToByte(bits);
68日期整数表示法(精确到分)第2张//获取并设置日(日占5bit)69日期整数表示法(精确到分)第2张bits=CopyTo(bitArray,11,5);
70日期整数表示法(精确到分)第2张byteday=ToByte(bits);
71日期整数表示法(精确到分)第2张//获取并设置月(月占4bit)72日期整数表示法(精确到分)第2张bits=CopyTo(bitArray,16,4);
73日期整数表示法(精确到分)第2张bytemonth=ToByte(bits);
74日期整数表示法(精确到分)第2张//获取并设置年(年占8bit)75日期整数表示法(精确到分)第2张bits=CopyTo(bitArray,20,8);
76日期整数表示法(精确到分)第2张intyear=ToInt32(bits);
77日期整数表示法(精确到分)第2张year+=DEFAULTYEAR;
78日期整数表示法(精确到分)第2张returnnewDateTime(year,month,day,hour,minute,0);
79日期整数表示法(精确到分)第8张}
80日期整数表示法(精确到分)第2张privatestaticBitArrayCopyTo(BitArraybits,intpos,intlength)
81日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
82日期整数表示法(精确到分)第2张BitArraybitArray=newBitArray(length);
83日期整数表示法(精确到分)第2张for(inti=0;i<length;i++)
84日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
85日期整数表示法(精确到分)第2张bitArray[i]=bits[pos+i];
86日期整数表示法(精确到分)第8张}
87日期整数表示法(精确到分)第2张returnbitArray;
88日期整数表示法(精确到分)第8张}
89日期整数表示法(精确到分)第2张privatestaticbyteToByte(BitArraybitArray)
90日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
91日期整数表示法(精确到分)第2张byte[]intArray=newbyte[1];
92日期整数表示法(精确到分)第2张bitArray.CopyTo(intArray,0);
93日期整数表示法(精确到分)第2张returnintArray[0];
94日期整数表示法(精确到分)第8张}
95日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张/**////<summary>96日期整数表示法(精确到分)第2张///将字节转换成给定长度的Bool型数组
97日期整数表示法(精确到分)第2张///</summary>98日期整数表示法(精确到分)第2张///<paramname="b">字节</param>99日期整数表示法(精确到分)第2张///<paramname="length">长度</param>100日期整数表示法(精确到分)第8张///<returns>Bool型字节数组</returns>

101日期整数表示法(精确到分)第2张privatestaticbool[]Convert(byteb,intlength)
102日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
103日期整数表示法(精确到分)第2张bool[]bs=newbool[length];
104日期整数表示法(精确到分)第2张intsize=sizeof(byte)*8;
105日期整数表示法(精确到分)第2张for(inti=0;i<length;i++)
106日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
107日期整数表示法(精确到分)第2张bs[i]=System.Convert.ToBoolean(((byte)(b<<(size-1-i)))>>(size-1));
108日期整数表示法(精确到分)第8张}
109日期整数表示法(精确到分)第2张returnbs;
110日期整数表示法(精确到分)第2张
111日期整数表示法(精确到分)第2张//上面的算法拥有更高的效率
112日期整数表示法(精确到分)第2张
113日期整数表示法(精确到分)第2张//BitArraybitArray=newBitArray(newbyte[]{b});
114日期整数表示法(精确到分)第2张//bool[]bs=newbool[length];
115日期整数表示法(精确到分)第2张//for(inti=0;i<length;i++)
116日期整数表示法(精确到分)第2张//{
117日期整数表示法(精确到分)第2张//bs[i]=bitArray[i];
118日期整数表示法(精确到分)第2张//}
119日期整数表示法(精确到分)第2张//returnbs;120日期整数表示法(精确到分)第8张}
121日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张/**////<summary>122日期整数表示法(精确到分)第2张///将整数转换成给定长度的Bool型数组
123日期整数表示法(精确到分)第2张///</summary>124日期整数表示法(精确到分)第2张///<paramname="b">字节</param>125日期整数表示法(精确到分)第2张///<paramname="length">长度</param>126日期整数表示法(精确到分)第8张///<returns>Bool型字节数组</returns>

127日期整数表示法(精确到分)第2张privatestaticbool[]Convert(intvalue,intlength)
128日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
129日期整数表示法(精确到分)第2张bool[]bs=newbool[length];
130日期整数表示法(精确到分)第2张intsize=sizeof(int)*8;
131日期整数表示法(精确到分)第2张for(inti=0;i<length;i++)
132日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
133日期整数表示法(精确到分)第2张bs[i]=System.Convert.ToBoolean(((int)(value<<(size-1-i)))>>(size-1));
134日期整数表示法(精确到分)第8张}
135日期整数表示法(精确到分)第2张returnbs;
136日期整数表示法(精确到分)第2张
137日期整数表示法(精确到分)第2张//上面的算法拥有更高的效率
138日期整数表示法(精确到分)第2张
139日期整数表示法(精确到分)第2张//BitArraybitArray=newBitArray(newint[]{value});
140日期整数表示法(精确到分)第2张//bool[]bs=newbool[length];
141日期整数表示法(精确到分)第2张//for(inti=0;i<length;i++)
142日期整数表示法(精确到分)第2张//{
143日期整数表示法(精确到分)第2张//bs[i]=bitArray[i];
144日期整数表示法(精确到分)第2张//}
145日期整数表示法(精确到分)第2张//returnbs;146日期整数表示法(精确到分)第8张}
147日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张/**////<summary>148日期整数表示法(精确到分)第2张///将BitArray转换成整数
149日期整数表示法(精确到分)第2张///</summary>150日期整数表示法(精确到分)第2张///<paramname="bitArray">BitArray</param>151日期整数表示法(精确到分)第8张///<returns>Int32</returns>

152日期整数表示法(精确到分)第2张privatestaticintToInt32(BitArraybitArray)
153日期整数表示法(精确到分)第3张日期整数表示法(精确到分)第4张日期整数表示法(精确到分)第1张{
154日期整数表示法(精确到分)第2张int[]intArray=newint[1];
155日期整数表示法(精确到分)第2张bitArray.CopyTo(intArray,0);
156日期整数表示法(精确到分)第2张returnintArray[0];
157日期整数表示法(精确到分)第8张}
158日期整数表示法(精确到分)第187张}
好久没写博客了日期整数表示法(精确到分)第188张。关于日期排序如果大家有更好的办法,不惜赐教。

免责声明:文章转载自《日期整数表示法(精确到分)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信小程序手动实现select下拉框选择无人机飞控三大算法汇总下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

vant-picker二次封装

痛点在项目经常会遇到这样的设计,下拉选择框,在vant中没有提供直接的select组件,但是可以使用Field、Popup和Picker这三个组件组合来完成。this.show;}},watch:{selectValue:function{this.result=newVal;},result{this.$emit;}}};效果链接:https://www....

influxdb简单使用

之前对influxdb有一个简单的了解和入门的使用,近期由于想使用influxdb做一点东西玩玩,又要捡起influxdb。而在influxdb下没有细分的表的概念,influxdb下的表在插入数据库的时候自动会创建。更多用户权限设置可以参看官方文档:https://docs.influxdata.com/influxdb/v1.0/query_langua...

从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法

具体下载地址:HTTP://www.microsoft.com/downloads/details.aspxFAMILYID=c06b8369-60dd-4b64-A44B-84b371ede16d&displayLang=ZH-CN对于一些早期用户,如果连接字符串中使用的是“Microsoft.Jet.OLEDB.4.0”,由于喷气项目已经停止,该项目不再...

Mysql 查询以某个字符开头的语句

为了查询以某个字符开头的数据,MySQL中经常使用它。常见的语句如下:以查询文章标题以单词“positive”开头的语句为例:使用通配符:1SELECT*FROM`article`,其中title类似于“positive%”;使用左函数:使用字符串截断函数:1SELECT*FROM`article`其中substring(title,1,1)='positi...

移动端媒体查询的一些尺寸参考

device-width是设备实际的宽度,不会随着屏幕的旋转而改变,因此并不适合开发响应式网站。比如iphone5s的屏幕分辨率宽为640,由于retina显示策略,当scale设置为1的时候,对应的media中取到的width为320,当scale设置为0.5的时候,width为640,而device-width始终是320。总结1.device-widt...

【解决方法】ModuleNotFoundError: No module named 'flask._compat'

起源最近发下很多人在我的python课程下面提问,关于安装完扩展运行程序的时候出现如下的莫名其妙的错误Traceback(mostrecentcalllast):File"manage_web.py",line2,infromapplicationimportapp,managerFile"/data/www/private_deploy/python3_y...