日期处理

ZDNet软件频道 时间:2000-05-23 作者:Nathan Torkington |  我要评论()
本文关键词:
人类文明的历史进程是通过精确的日期和时间来刻划的, 让我们来看看Perl 程序员是如何处理日期的

让我们生成一个日期

通过Perl中提供的gmtime函数,你可以自己来验证这点。给定一个用以表示自从纪元以来的秒数的整数,通过gmtime函数可以计算出代表相应的日期和时刻,例如:

perl –le 'print scalar gmtime 96163200'

Thu Jan 18 00:00:00 1973

如果你调用 gmtime() 函数,你会得到一系列值的列表:

包括时,分,秒, 日期,月份,年份等等。

perl –le 'print join(",", gmtime 96163200)'

0,0,0,18,0,73,4,17,0

前面3个0分别表示秒,分,时。小时是从0-23,故下午是12时往后。第4个数表示该月中的天数(本例中为18号)。第5个数表示月份,从0开始(代表1月份)。之所以从0开始,是因为月份对应着月份数组的下标:

@months = qw(Jan Feb Mar Apr May Jun
     Jul Aug Sep Oct Nov Dec); $month  =
(gmtime 96163200)[4];     # "Jan"

年份 (本例中为73)的表示有点特殊。它并不是年份的最后两位数字。它表示从1900年开始的年份。为什么要这样表示呢?这是因为 C语言就是这样处理的。Perl试图使得其库和系统调用尽量接近操作系统的处理方式。

所以,如果你想输出4位数的年份,表示如下:

$year = (gmtime 96163200)[5] + 1900;

如果你不了解这种处理方式,就会制造出Y2K问题,你也许会这样写:

$year = "19" . (gmtime 96163200)[5];

     # 出错!  2000年将变为19100

对于gmtime()函数的返回值还没有介绍完,还有4, 17, 和 0这3个数。它们分别表示一星期中的第几天 (星期日为0),一年中的第几天(0 表示一年中的第一天), 以及是否采用夏时制(表示不采用,正数表示采用,负数表示不可知)。

上一页 下一页
日期是如何表示的 现在!现在!现在!

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134