2012-09-08 5 views
1

필자는 perl에 대한 경험이 없기 때문에 오프셋을 추가 한 후 날짜를 인쇄하는 유틸리티를 만들어야합니다. 형식 문자열은 strftime 형식 문자열입니다.perl에서 addate 유틸리티를 구현하는 방법은 무엇입니까?

형식 : ./adddate NUMBER_OF_DAYS [FORMAT_STRING]

예 : ./adddate -1 "%의 A, % B 형 %의 D"# 전단 일부 연구 후 어제

+1

들어오는 타임 스탬프와 [DateTime'] (http : //)를 구문 분석하려면 [DateTime :: Format :: Strptime'] (http://search.cpan.org/dist/DateTime-Format-Strptime/) /search.cpan.org/dist/DateTime/)을 사용하십시오. –

+0

[Date :: Calc] (http://search.cpan.org/~stbey/Date-Calc-6.3/lib/Date/Calc.pod)는 다른 대안입니다. –

+1

그래서 날짜와 오프셋이 있고 특정 strftime 형식으로 결과 (날짜 + 오프셋)가 표시됩니까? –

답변

3

의 날짜

#!/usr/bin/perl 
use DateTime; 
$offset = $ARGV[0]; 
$format = $ARGV[1]; 
$dt = DateTime->now(); 
$dt->add(days => $offset); 
print $dt->strftime($format)."\n"; 
0

가에 의해 반환 단순히 (고장난 형태로 시간의 tm_mday 필드를 증가, 일을 추가하려면 : 나는 코드를 작성 할 수 있었다 210). A mktime - localtime 라운드 트립은 월간 또는 년간 롤오버를 고려하여 왕복 조정합니다.

use strict; 
use feature qw(say); 
use POSIX qw(mktime strftime); 

my $offset = $ARGV[0]; 
my $format = $ARGV[1]; 

my @t = localtime; 
$t[3] += $offset; # tm_mday field 

say strftime($format, localtime mktime @t); 

모든 코어 모듈.

관련 문제