注意:有关时间日期的库函数,三月份作品(已发布)

发表于:2007-05-25来源:作者:点击数: 标签:日期三月份有关时间注意
[size=18:02d4fd6cac][b:02d4fd6cac] 由于已有十二位网友“顶”力相助了,我将这个库发布出来。有了前面的教训,我不打算在这里帖出来了。请直接到我的演示地址去下载。这次这个演示例子比较清楚,怎么用大家自己参考吧,请仔细看库函数,然后自己去组合,可

[size=18:02d4fd6cac][b:02d4fd6cac]
由于已有十二位网友“顶”力相助了,我将这个库发布出来。有了前面的教训,我不打算在这里帖出来了。请直接到我的演示地址去下载。这次这个演示例子比较清楚,怎么用大家自己参考吧,请仔细看库函数,然后自己去组合,可以完成更多的功能。

演示网址:
http://longnetpro.xicp.net/demo

另外:源码中要注意函数的参数中有可能传递引用,主要是用于一个函数中同时返回多个结果——通过引用传到函数外部。
[/b:02d4fd6cac][/size:02d4fd6cac]

简介:

有关时间日期的库函数,三月份作品,共二十二个函数(这次没有用OO)。

该库函数分两个主要部分:日期处理部分与时间处理部分。

在日期处理方面,有朱力安历及高格里历(及现在公历)的日期处理,并处理1582年日期修正。函数有判断闰年,检查日期有效性,距公元元年一月一日零时的天数等函数,象取得某年某月某日是当年第几天或是星期几这种是基本函数,就不再提了。还有一些函数,如将距公元元年一月一日的天数转换为具体年月日(可以为公元前的日期)的函数;得到某年某月的第几个星期几是几号的函数;将日期转换为ISO8601格式的函数;取得黄道星座的函数等等。

在时间处理方面,时间范围与UNIX时间戳兼容(在1970年到2038年与UNIX时间戳是完全一致的,就是说时间戳还是以GMT1970年1月1日零时为时间戳的0,前面的是负数,后面的是正数),但远远大于UNIX时间戳的范围。时间范围从公元前4713年1月1日00:00:00(朱力安历零时)到公元9999年12月31日23:59:59。有分别对应于mktime及gmmktime的经过扩展的函数。还有一个专门的函数将时间戳(扩展后的)转换为年月日、时分秒、星期、天数等信息,以方便直接使用。

将这些函数组合起来使用,基本上可以实现对日期与时间的各种操作。比如求两个日期之间的天数差,只需用函数得到两个日期距公元元年一月一日的距离,相减即可。或是某个日期加上天数然后逆变为日期。你还可以将它们组合起写成更多自己的函数。

在所有的函数中,没有用到任何循环,不象ADODB中那样处理时间——好象ADODB中的时间处理大量用循环递增或递减,真不知道其作者为什么用这种方式算日期与时间——分析它的代码后估计是对那些历史上修正过的日期不好处理,由于修正过,日期与星期会错位。我这个库函数中都是纯加减乘除取模取整并用条件判断,一般都是一次计算出来,没有循环计算的情况。

注:这些库函数基本经过本人严格检验,程序上应该没有什么BUG(如果有的话欢迎指出)。这次有些英文注释,不过由于算法比较多,可能数学不好的人不大看得懂,还有对历法不清楚的人也不大看得懂(当时我为了写这些函数上网查历法就查了好久)。反正你到时候试着用就完了。

最后,声明一下。本库函数中有一个算法是参考了PEAR中相关类的一个方法,即将距公元元年第一天的天数转换为具体年月日的算法——典型的数学变换技巧,实在是佩服想出这个算法的人。在ADODB中的时间处理部分发现了ISO8601规范,并在网上查到具体规范再实现之(实现过程是原创的)。其余所有函数中涉及的所有算法均是在核实历法之后由本人原创,库的设计也是原创。至于说其中有些数据值是怎么得来的,只能说一句:是用计算器或是写个小程序算出来的,本人可以基本保证这些数据的正确性(除了我不知道的历法变化不能保证外)。

有兴趣的朋友可以跟帖。如果有更好的建议可以讨论。

 tonera 回复于:2004-05-17 12:42:10
建议:为了大家能更好更深刻更容易地理解您的大作的精华,是不是考虑给出足够多的注释(中文更佳)?

 longnetpro 回复于:2004-05-17 12:54:39
主要是本人太懒,一般函数名,变量名基本上就表示出大致的算法流程,因此不大写注释。还有一个就是本人自认为代码逻辑还算是比较清晰的,很多无关紧要的东西都没有必要写注释。至于为什么不用中文,很简单:写代码的时候老要切换输入法,比较烦。再说,在一大篇英文字母中夹进一些汉字,看着不舒服(我一直用UE写代码,夹进汉字字体比较难看)。

 vidarz 回复于:2004-05-17 13:09:11
我来顶一下,有好东西看当然期待了。肯定又是一个精华贴。

 gzdkj 回复于:2004-05-17 17:46:58
期待中~~~

 夜猫子 回复于:2004-05-17 20:28:01
老大愿意贡献,偶们当然乐得其成,呵呵

 飞雪恨水 回复于:2004-05-18 11:02:34
好东西太多了

 mikespook 回复于:2004-05-18 11:49:35
好东东~~~

用中文注释难看,那就用英文啦~~ ^_^

 EasyChen 回复于:2004-05-18 14:33:22
up下 等着看好东西了

 jhsea3do 回复于:2004-05-18 20:54:14
顶, up, sp !!!

 oklqh 回复于:2004-05-19 00:07:06
waitting~~~

 muyan 回复于:2004-05-19 12:04:03
now waiting...

 longnetpro 回复于:2004-05-19 21:35:33
自己再顶一下,还差两个人。。。

 夜猫子 回复于:2004-05-19 21:36:36
老大,你要逼我注册马甲是不是?

 vidarz 回复于:2004-05-20 14:28:31
[quote:f7e3691f1c="longnetpro"]自己再顶一下,还差两个人。。。[/quote:f7e3691f1c]
偶是刚注册的新人,偶也来顶一下 8)

 gzdkj 回复于:2004-05-20 18:48:59
还没发布?顺便再顶一下!!!

 longnetpro 回复于:2004-05-20 19:47:19
[quote:b885c378d5="gzdkj"]还没发布?顺便再顶一下!!![/quote:b885c378d5]

就等最后一位了。

 csona 回复于:2004-05-20 23:11:01
我顶

 longnetpro 回复于:2004-05-21 09:27:57
由于各位的支持,现在发布了。

 longnetpro 回复于:2004-05-21 09:53:31
刚才有一个函数修正了一下,下载过的请重新下载

 vidarz 回复于:2004-05-21 10:13:00
不错!

 li2002 回复于:2004-05-24 08:31:33
不错,谢谢

 yutian 回复于:2004-05-24 09:02:39
ding

 shanhan 回复于:2004-05-24 13:44:16
heheh!
我看不懂啊

 PHPstupid 回复于:2004-05-24 16:01:15
顶一下

 w_heaven 回复于:2004-05-28 12:57:31
好东西

 huabingl 回复于:2004-05-28 13:19:39
提供的几个类是学习的好材料阿,感激不已

原文转自:http://www.ltesting.net