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

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

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

差很少全部星期算法的基础皆可概括以下:测试

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

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

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

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

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

简单来讲,使用同余7表示在计算中可剔除7的倍数,如此可把7看成0、8看成一、9看成二、18看成4,如此类推。若是把星期日看成第0日,7往后(第7日)亦是星期日,而第18日则会与第4日相同,为星期往后的4天,即星期四。一些算法把全部加数先行计算,而后把7的倍数剔除,而其余算法则在每一步皆剔除7的倍数。两种作法皆可取,第一种作法较适用于计算机及电脑算法中,其余则较适用于心算。这些计算在熟习后,可在脑内计算出来。get

关于星期计算的参考资料-维基百科
源码

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


具体内容请你们移步至源码示例

相关文章
相关标签/搜索