您的位置:首页 > 其它

System.DateUtils This of that functions部分函数示例及说明

2015-09-16 00:00 309 查看
摘要: 其中包含的函数有MonthOfTheYear,WeekOfTheYear,DayOfTheYear,HourOfTheYear,MinuteOfTheYear,SecondOfTheYear,MilliSecondOfTheYear,WeekOfTheMonth,DayOfTheMonth,HourOfTheMonth,MinuteOfTheMonth,SecondOfTheMonth,MilliSecondOfTheMonth,DayOfTheWeek,HourOfTheWeek,MinuteOfTheWeek,SecondOfTheWeek,MilliSecondOfTheWeek,...

该篇文章主要是对DelphiXE8的System.DateUtils单元中This of that functions部分的函数进行调用示例及说明,如有不对之处还望大家可以提出,本人予以改正!

其实之前对于DayOfTheWeek函数中的计算公式,为何要先对日期参数-1,然后再取模,最后对结果+1一直都没有理解,源码中的解释也不过是我通过测试得到的一个可能的结论而已。后来我在找参考资料的过程中发现了一段话,对我启发很大。

差不多所有星期算法的基础皆可归纳如下:

从一个已知的日子作为起始日,一般采用世纪的第一天,通过同余7计算共过去了多少天。如将一周日子由0至6计算,结果将为一余数,如使用1至7计算,则7将代替0。

查表或使用已知规则计算上面的起始日,即该世纪开始的星期数。

查表或使用已知规则计算该年份开始的星期数。

计算该月份开始的星期数。

从该月份开始的计算该日的星期数。

简单来说,使用同余7表示在计算中可剔除7的倍数,如此可把7当作0、8当作1、9当作2、18当作4,如此类推。如果把星期日当作第0日,7日后(第7日)亦是星期日,而第18日则会与第4日相同,为星期日后的4天,即星期四。一些算法把所有加数先行计算,然后把7的倍数剔除,而其他算法则在每一步皆剔除7的倍数。两种做法皆可取,第一种做法较适用于计算机及电脑算法中,其他则较适用于心算。这些计算在熟习后,可在脑内计算出来。
关于星期计算的参考资料-维基百科

看到以上的解释,我想其实我们调用该函数的时候也可以不先-1,最后再+1,只不过这样得到的结果0代表周日,其他无变化。这样的话不符合我们的日常习惯,大部分国家还是习惯用1-7来代表一周,而非0-6来代表一周的。

具体内容请大家移步至源码示例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: