首页 > 代码库 > [码海拾贝 之Perl]获取日期以及日期的加减
[码海拾贝 之Perl]获取日期以及日期的加减
前言
在Perl 中, 不安装其他模组的状况下, 可以使用 localtime 来获取当地日期和时间。
在标量上下文中, 返回的是字符串格式。
my $localtime = localtime(); print "\n$localtime\n";返回:
Thu Jan 1 18:17:56 2015
在列表上下文中, 返回的是描述当前时间的一个元素列表
my ($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = localtime();
$sec 秒,0 ~ 59
$min 分,0 ~ 59
$hour 时,0 ~ 23
$mday 月份中的日期, 1 ~ 2 8、2 9、3 0或3 1
$mon 年份中的月份, 0 ~ 11(这里请特别要小心)
$year_off 1900年以来的年份。将1900加上这个数字,得出正确的4位数年份
$wday 星期几,0 ~ 6
$yday 一年中的第几天,0 ~ 364或365
$isdst 如果夏令时有效,则为真
所以通过这种方式获得的日期:
年份需要加 1900: $year += 1900;
月份需要加一 : $mon += 1;
几个方法
得到当前日期:
sub get_current_day { my($sec,$min,$hour,$day,$mon,$year) = localtime(); $mon++;$year += 1900; my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day); return $data_now; }
如果要得到上一天的日期, 不能只是简单的在上面的日期基础上减一, 如果这样, 遇到跨月就会有问题:
正确的是 时间减去 86400秒(24 小时)
sub get_last_day { my($sec,$min,$hour,$day,$mon,$year) = localtime(time()-86400); $mon++;$year += 1900; my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day); return $data_now; }
得到上几天的日期:
sub get_last_number_day { my($lastNumber) = @_; my($sec,$min,$hour,$day,$mon,$year) = localtime(time()-86400*$lastNumber); $mon++;$year += 1900; my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day); return $data_now; }
[码海拾贝 之Perl]获取日期以及日期的加减
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。