16
十二
关于时间: 基础知识
Q:什么是tick?
A: 一种时间单位,在C#中1s = 10,000,000tick = 1000,000,000ns.
Q:什么是闰年?
A:我们一年实际的天数是约为365.2422日,这样差不多4年就多出一天来,于是历法中就规定,4年设一闰,即被4整除的年份为闰年,另遇世纪年(末尾数字是两个零的年份),必须被400整除才算闰年,闰年二月有29天。
Q:如何计算某天对应的星期天数。
A: DateTime提供了一个DayOfWeek的属性,其实现如下:
DayOfWeek DayOfWeek
{
get{return (DayOfWeek)((int)(((this.InternalTicks/0x92a69c000L)+1)%7L));}
}
其中:0x92a69c000L = 864000000000 = 24*60*60*10000000;
原理:InternalTicks的值为从0001年1月1日凌晨开始到现在的tick值,所以(this.InternalTicks/0x92a69c000L)+1就是0001年1月1日到现在的天数,再求除7的余数,
那么如果你知道0001年1月1日是星期几吗,你也就知道今天是星期几了,你知道0001年1月1号是星期几吗?:)
关于星期,还有一种算法,就是大家常说的基姆拉尔森公式,思路不太一样,有兴趣的可以研究一下。
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) % 7
(未完待续)
归类于:代码人生 标签: 关于 时间 基础 知识
已经有 1 评论了
发表评论

0001年1月1号是星期一^_^ 1tick = 1ms*10000,了解