码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-09-16 20:24:29      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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

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

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

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

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

简单来说,使用同余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来代表一周的。


具体内容请大家移步至源码示例

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

标签:

原文地址:http://my.oschina.net/u/140474/blog/506983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!