use strict;use warnings;use Date::Calc qw(Add_Delta_YMD);my $startDate = '2000-01-01';my ($startYear,$startMonth,$startDay) = $startDate =~ m/(/d-(/d)-/d)/;# 1 year,2 months,3 days,after startDatemy $endDate = join('-',Add_Delta_YMD($startYear,$startDay,1,2,3)); 该模块有一个时间转换例程数量庞大,特别是那些三角洲处理。 |
2)
见 它将帮助您转换的日期和时间到一个简单的数字,这是UNIX时间(1月1日以来的秒数数字,1970年,我相信)。然后,只需减去3(天)24倍(在1小时)60倍(以1小时分钟)60次(在一分钟秒),或259200从这个数字秒,并使用 这可能是最好的解决办法*,因为它将处理的月份和年份自动改变。任何其他的解决方案将可能最终会被更多的检查后,看看我们跑出天1个月,或跑了几个月,一年保理复杂。
编辑:*之外的回顾 |
3)
日期::计算器可用于这些计算: #!/usr/bin/perluse strict;use warnings;use Date::Calc qw(Add_Delta_Days);my ( $yyyy,$mm,$dd ) = ( 2009,9,2 );my @date = Add_Delta_Days( $yyyy,$dd,-3 );print join( '-',@date ); |
4)
有这么多的选择,这是适度的尴尬。它在某种程度上取决于什么其他计算,您可能需要在未来,以及是否和时区的时间永远是一个因素,以及类似的东西。 你可以看看这些任何 Date::Calc Date::Manip DateTime::* -又见datetime.perl.org ( 尽管该网站似乎没有作出回应关于2009 - 09 - 01T22 :30 - 07:00) 是名副其实的三(套)模块。我建议 |
5)
整洁的事情了 use POSIX qw<mktime>;my ( $year,$month,$day ) = split '-',$date;my $three_day_prior = mktime( 0,$day - 3,$month - 1,$year - 1900 );
|
6)
这是简单, C:/>perl -MDate::Simple=today -e "print today()-3" 2009年8月30日 |
7)
DateTime的是典型的现代方式的Perl处理日期: use DateTime;my ($year,$day) = split '-','2009-09-01';my $date = DateTime->new( year => $year,month => $month,day => $day );$date->subtract( days => 3 );# $date is Now three days earlIEr (2009-08-29T00:00:00) / I3az / |
---------------------------------------------------------------------------------
Simply using POSIX::mktime with tricks.
sample code:
以上是内存溢出为你收集整理的Perl的时间处理全部内容,希望文章能够帮你解决Perl的时间处理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)