Perl处理日期时间的技巧
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-03-15
表示日期的方式多种多样: “18 Jan 1973″ ,”18/01/1973″ ,”01/18/1973″ ,”Jan 18 1973″ ,”18-01-73″ ,”18-01-1973″ ,”01/73″,其中一些格式含义不清(如”01-06-1973″是表示6月1日呢,还是表示1月6日呢?) 如果不规定日期的表示形式,是很难处理的。 想了解”18 Jan 1973″和”6 Sep 1950″之间的区别,需要把它们转换为数字表示。Unix 内部使用纪元秒表示时间。日期和时间加起来表示之自格林威志时间1970年1月1日午夜时分(纪元)到当前时刻之间的秒数。”18 Jan 1973″ (假定为午夜时分) 的纪元秒为96163200。在该系统中,午夜表示一天的开始时刻。 让我们生成一个日期通过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 表示一年中的第一天), 以及是否采用夏时制(表示不采用,正数表示采用,负数表示不可知)。 Perl中的time() 函数返回以纪元秒形式表示的当前日期和时 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: Perl操作mysql数据库的方法下一篇: php教程:php设计模式介绍之适配器模式
关于Perl处理日期时间的技巧的所有评论