2012-02-15 65 views

回答

4
perl -MDate::Calc -E ' use Date::Calc qw(Add_Delta_Days);say join "-", Add_Delta_Days(2011,11,30,1);' 

2011-12-1 

在腳本(不是很安全)

use Date::Calc qw(Add_Delta_Days); 
my $entered_date = "2011-12-31"; 
print join "-", Add_Delta_Days(split(/-/,$entered_date),1);' 

2012-1-1

+1

你爲什麼說你的腳本不安全? – Borodin 2012-02-15 15:06:53

+0

@Borodin - 沒有輸入驗證,沒有嚴格的,沒有警告,沒有檢查從呼叫返回split()...只是說''。 – knb 2012-02-15 15:28:23

+0

啊好的,所以它不會比你的一行內容更不安全,這是我推斷的。 – Borodin 2012-02-15 21:54:36

5
use Time::Piece; 
use Time::Seconds; 
my $date = Time::Piece->strptime($entered_date, "%Y-%m-%d"); 
$date += ONE_DAY; 
return $date->strftime("%Y-%m-%d"); 

Wintendo兼容性[編輯:更改%F%Y-%m-%d。謝謝,@bvr]

+0

嗨,我m在Windows操作系統下工作。上面的代碼不會返回任何值。我需要更改日期格式爲$ entered_date =「2011-11-30」 – Madhan 2012-02-15 13:01:22

+0

代碼是正確的。 http://ideone.com/kiioD – 2012-02-15 13:07:05

+1

(它顯然需要Time :: Piece,但是因爲它是Perl> = 5.10中的核心模塊,所以不應該成爲問題)。 – 2012-02-15 13:12:58

4
use Date::Simple; 

my $date = Date::Simple->new($entered_date); 

$date++; 

print $date; 

通過新的()被描述under constructors

理解的格式
+1

可能應該提及這不是標準Perl,而是使用第三方CPAN模塊,對任何嘗試使用它的代碼引入進一步的依賴關係。 – tchrist 2012-02-15 14:29:48

2
use strict; 
use DateTime::Format::Flexible; 
my $entered_date = "2011-11-30"; 

my $dt = DateTime::Format::Flexible->parse_datetime($entered_date); 
print $dt->add(days => 1)->ymd; 
相關問題