2012-02-15 4 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

+0

@Borodin - 입력 유효성 검사, 엄격한 경고, 경고 없음, split() ...의 호출에서 반환 된 내용을 확인하지 않습니다. 그냥 sayin '입니다. – knb

+0

아, 그래, 내가 추측 한 한 줄짜리 라이너보다 더 안전하지 않아. – Borodin

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

안녕하세요, 저는 Windows OS에서 작업하고 있습니다. 위의 코드는 값을 반환하지 않습니다. $ dates_date = "2011-11-30"에 대한 날짜 형식을 변경해야합니까 – Madhan

+0

코드가 정확합니다. http://ideone.com/kiioD –

+1

(분명히 Time :: Piece가 필요하지만 문제가 아니어야하는 Perl> = 5.10의 핵심 모듈이기 때문에) –

4
use Date::Simple; 

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

$date++; 

print $date; 

() 새로운 under constructors

을 설명 이해할 형식
+1

아마도 이것이 표준 Perl은 아니지만 타사 CPAN 모듈을 사용하여이를 사용하려고하는 모든 코드에 추가 종속성을 도입해야 함을 언급해야합니다. – tchrist

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; 
관련 문제