"yyyy-MM-ddTHH:mm:ssZ"
형식의 문자열 속성을 가진 수천 개의 개체가 있습니다. 이 객체들을 시간순으로 정렬하고 싶습니다.어떻게 Perl에서 타임 스탬프를 정렬 할 수 있습니까?
유용한 패키지 또는 스크립트가 있습니까?
"(현재 난 그냥 개별 숫자 값을 비교하고 있는데 매우 효율적이고 깔끔한없는 것 같다.)
"yyyy-MM-ddTHH:mm:ssZ"
형식의 문자열 속성을 가진 수천 개의 개체가 있습니다. 이 객체들을 시간순으로 정렬하고 싶습니다.어떻게 Perl에서 타임 스탬프를 정렬 할 수 있습니까?
유용한 패키지 또는 스크립트가 있습니까?
"(현재 난 그냥 개별 숫자 값을 비교하고 있는데 매우 효율적이고 깔끔한없는 것 같다.)
Time :: Local을 사용하여 날짜를 타임 스탬프로 변환하거나 cpan의 Date :: modules 중 하나를 변환 할 수 있습니다. 사용할 수있는 것을 보려면 this을보십시오.
또한 위의 형식으로 개체를 사전 순으로 정렬하면 트릭을 수행 할 수 있습니다 (숫자를 비교하는 것보다 다소 느리지 만 초기 변환에는 비용이 발생 함).
시간대 및 일광 절약 시간제와 관련된 정렬 문제가 발생할 수 있으므로 전 세계에서 날짜를 사용하는 경우주의하십시오. 모든 datetimes가 괜찮을 것 같은 장소에 있다면.
sort
정렬 기능 없이는 사전 식 순서로 정렬됩니다. 그것은 당신의 필요를 충족시킵니다.
@sorted = sort @timestamps;
문자열 형식이 고정되어 있으면 다음 서브 루틴을 사용하여 날짜 목록을 정렬 할 수 있습니다.
sub timeSort {
my ($time) = (shift =~ /\d{2}:\d{2}:\d{2}/);
return $time;
}
my @sortedList = sort { timeSort($a) <=> timeSort($b) } @oldList;
'shift '를 사용하는 대신'$ _ [0]'이 빠를 수도 있습니다 (정렬을 위해 여러 번 호출되기 때문에). 그렇지 않으면 그게 내가 그렇게 할 수있는 방법이야. –
TTT 값, MM 값 등을 비교한다는 뜻입니까? 그렇다면 실제로 전체 문자열을 타임 스탬프 값으로 변환해야합니다. – kriss