this answer에서 저는 DateTime::Format::Strptime
을 사용하여 문자열에서 날짜를 가져 왔습니다.DateTime :: Format :: Strptime을 사용하여 문자열을 날짜로 변환합니다.
다음 패턴을 사용하고 있습니다 : %m%d%Y%n%T
. 이 should be matching :
%m
: 월 번호 (01-12)입니다. 이렇게하면 한 자리 숫자도 구문 분석됩니다.%d
: 일 (01-31). 이렇게하면 한 자리 숫자도 구문 분석됩니다.%Y
: 세기를 포함하는 연도 (예 : 1991).%n
: 임의 공백.%T
: 등가
%H
다음 시간 (00-23). 이렇게하면 한 자리 숫자도 구문 분석됩니다.%M
: 분 (00-59). 이렇게하면 한 자리 숫자도 구문 분석됩니다.%S
: 초 (0-60; 60은 윤초에 발생할 수 있습니다 (DateTime::LeapSecond
참조).
%H:%M:%S
행 :
그러나, 입력에 : [05/18/2011 14:14:05
]이 오류와 함께 실패하는 것 :
Your datetime does not match your pattern
는 최대한 멀리 볼 수있는, 내 패턴은 입력 패턴과 일치합니다. 내가 어디로 잘못 가고 있니?
관련 코드는 다음과 같습니다 :
use DateTime::Format::Strptime qw();
my $format = DateTime::Format::Strptime->new(
pattern => '%m%d%Y%n%T',
time_zone => 'local',
on_error => 'croak',
);
my $dt = $fields->[1] ;
print "Date:[$dt]\n";
my $dateopen = $format->parse_datetime($dt);
출력 :
Date:[05/18/2011 14:14:05]
Your datetime does not match your pattern