ISO 형식 —의 두 날짜 비교 (파일로부터 동적으로 수신)를 찾고 있습니다. 2011-12-14T17:22:52Z
— in Perl. 내가 어떻게 해?Perl에서 ISO 형식 (% Y- % m- % dT % H : % M : % SZ)으로 날짜와 시간을 비교하는 방법은 무엇입니까?
답변
당신이 보여 ISO 8601 표기법의 가장 큰 장점은 그것이 문자열 비교와 비교 될 수 있다는 것입니다 :
이my $v1 = "2011-12-14T17:22:52Z";
my $v2 = "2012-01-03T19:13:49Z";
print "$v1 earlier than $v2\n" if $v1 lt $v2;
이 값이 모든 줄루 시간에 가정 (Z 일명, UTC 시간대입니다) . 다른 시간대가있는 경우 단일 표준 시간대로 표준화해야합니다 (UTC는 현명한 선택입니다).
주의해서 유의하십시오. 'string comparison'.
Perl에서 <
연산자는 두 개의 숫자를 비교합니다. 제시된 값은 훅, 도둑 또는 무력과 무지로 숫자로 강요됩니다. 예를 들어 if ("A" == "B")
이 참이면 "A"
이 숫자로 처리되므로 0이되고 "B"
이됩니다. 날짜/시간 문자열은 숫자 비교를 사용하는 경우에만 숫자가 연도 구성 요소 인 것처럼 처리됩니다. (그 니모닉 원래 포트란 비교 연산자에 따라 될 수 있습니다 lt
, le
, gt
, ge
, eq
, ne
및 cmp
)
문자열 비교 연산자는 문자열을 비교하는 데 사용됩니다. 숫자 비교를 위해 숫자 비교기 (<
, <=
, >
, >=
, !=
, ==
및 <=>
)를 사용합니다. 당신이하고 싶은 비교 유형을 구분하도록주의하십시오.
날짜 인 경우 하지 반드시 동일한 시간대 (질문이 명시 적으로 언급하지 않았다)에, 다음 구문 분석 및 날짜 문자열을 직접 계산하는 것보다 전용 날짜 & 시간 모듈을 사용하여 더 나을 것입니다. 여기 DateTimeDateTime::Format::ISO8601 및 모듈을 사용하는 예이다 : 비교 캐릭터 기반의 않음 문자열 비교 달리 두 개체 사이의 수치 비교를 사용
use DateTime::Format::ISO8601;
my $dt1 = DateTime::Format::ISO8601->parse_datetime('2011-12-14T17:22:52Z');
my $dt2 = DateTime::Format::ISO8601->parse_datetime('2011-12-14T17:22:52+01:00');
if ($dt1 < $dt2) {
print "$dt1 is first\n";
} else {
print "$dt2 is first\n";
}
참고있다. DateTime
이 비교 연산자와 문자열 보간 "연산자"를 오버로드했기 때문에이 방법이 효과적입니다.
문제를 보는 한 가지 방법은 샘플 날짜 포함입니다 'Z' (줄루 시간 또는 UTC) 시간대 지정, 그리고 사람들이 technogeek가 아닌 한 일반적으로 사용하지 않기 때문에나는 때때로 그것을 사용한다), 날짜는 (아마도) 모두 같은 시간대에 있고 그 시간대는 UTC이다. 그럼에도 불구하고 표준 시간대가 다를 경우 간단한 문자열 비교가 적합하지 않습니다. 예를 들어'2015-01-01T04 : 30 : 00 + 12 : 00'은'2014-12-31T14 : 28 : 00-08 : 00'보다 빠릅니다 - 이전은'2014-12-31T20 : 30 : 00Z', 후자는'2014-12-31T22 : 28 : 00Z'입니다. 이것을 처리하기 위해 패키지를 사용하는 것이 현명합니다. –
- 1. Wordpress % Y/% m/% d의 이상한 날짜와 시간
- 2. 날짜와 시간을 비교하는 PHP 날짜 형식?
- 3. 자바 스크립트/PHP % Y- % m- % d % H : % M : 로컬 컴퓨터 시간을 조정하는 % S
- 4. 기본 날짜 형식을 % Y % m % d % H % M % S로 변경하십시오.
- 5. Storyboard에서 .m/.h 파일을 생성하는 방법은 무엇입니까?
- 6. 하나의 .h 여러 .m 파일
- 7. .h 및 .m 파일 결합
- 8. Perl에서 M- 파일 API 액세스
- 9. 날짜 비교 ("Y-m-d h : i : s");
- 10. datetime을 십진수에서 "% d. % m. % y % H : % M : % S"로 우아하게 변환하는 방법?
- 11. 날짜 별 MySQL 주문 (M D, Y, H : M : S am \ pm)
- 12. ValueError : 시간 데이터 '2012-07-19 08:24:00'형식이 '% Y- % m- % d H : M : S'와 일치하지 않습니다.
- 13. 문자열에서 시간을 얻는 방법 H : M : S in C
- 14. javascript 정규식과 일치하는 d-M-Y 방법은 무엇입니까? PHP에서 서식
- 15. 현재 날짜와 MySQL 날짜를 비교하는 방법은 무엇입니까?
- 16. iPhone 라이브러리의 .h & .m 파일 추가
- 17. .h 및 .m 파일에서 .XIB를 만드는 방법은 무엇입니까?
- 18. m/d/y 형식 날짜를 Unix 타임 스탬프로 변환
- 19. (M | m) akefile 의미 란 무엇입니까?
- 20. Datatables.net 플러그인에서 형식 정렬 (Y-m-d H : i : s)이 작동하지 않습니다.
- 21. 카산드라에서 M : M 관계를 모델링하는 다른 방법은 무엇입니까?
- 22. 하나의 .m 파일에서 다른 m 파일로 변수를 변경하는 방법은 무엇입니까?
- 23. y/m/d 문자열을 전달한 사용자를 mysql에서 날짜 시간과 비교하는 방법은 무엇입니까?
- 24. 아이폰 부하 XIB/M/H 문제
- 25. 기호 탐색기에서 h 또는 m 파일 표시
- 26. XCode의 .h 및 .m 파일 모두 검색
- 27. m/h/s에 의한 MySQL 주문 날짜
- 28. .h 또는 .m 파일에 #import를 넣으시겠습니까?
- 29. 목표 c : 메서드 관계 .h 및 .m
- 30. iPhone - .h 파일 - 인터페이스 & .m 파일 - 구현입니까?
감사합니다. Jonathan Leffler !!! 그것은 일했다 .... – SWN
Nit : "t"와 "T"가 모두 허용되고 둘 다 "z"와 "Z"가 허용되기 때문에 문자열을 비교하기 전에 문자열을 'uc'해야합니다. – ikegami
참고 :이 특정 형식은 RFC 3339라고합니다. Atom은 대문자 "T"및 "Z"만 허용한다는 점을 제외하고는 Atom에서 사용됩니다 (다른 것들 중에서도). DateTime의 파서와 포맷터 : [DateTime :: Format :: RFC3339] (http://search.cpan.org/perldoc?DateTime::Format::RFC3339), [DateTime :: Format :: Atom] (http : /search.cpan.org/perldoc?DateTime::Format::Atom) – ikegami