2009-03-05 24 views
6

İki büyük günlük dosyasında çalışıyorum ve zaman damgalarını karşılaştırmak istiyorum.Perl'de zaman matematiği ile baş etmenin en iyi yolu nedir?

Zaten eşleşen günlük ifadelerini bulmak için bir Perl betiği yazdım, ancak zaman damgasındaki farkı bulmam gerekiyor.

Örneğin

, 15: 31: 19,430888 eksi 15: 31: 19,427763

Perl zaman başa çıkmak için herhangi bir iyi yapılar var mı? Bundan kaçınabiliyorsam, zaman matematikiyle uğraşmak istemiyorum.

+0

Python'u öğrenmeye harcıyor musunuz? annakata

+1

http://articles.techrepublic.com.com/5100-10878_11-6132371.html – grieve

cevap

13

DateTime CPAN modülünü kullanabilirsiniz. Örn.,

örn. Size gelen sonuçlar almak için DateTime::Duration nesneyi verecektir

my $dt = DateTime->new( 
         year => 2009, 
         hour => 15, 
         minute => 31, 
         second => 19, 
         nanosecond => 430888 
); 
my $dt2 = DateTime->new( 
         year => 2009, 
         hour => 15, 
         minute => 31, 
         second => 19, 
         nanosecond => 427763 
); 
my $duration = $dt - $dt2; 

.

+0

Varsayılan değerde böyle bir yapı var mı? CPAN'da değil misiniz? – Alex

+0

@windfinder: Orada olduğuna inanmıyorum. Perl oldukça sınırlı varsayılan lib'lerle birlikte gelir. – Powerlord

+0

wordfinder, aşağıda görmediyseniz, Time :: Piece en son Perl'deki çekirdek lib'lerde yer almaktadır. Genelde bir şey kullanmak için yeterince iyi bir sebep olduğunu düşünmüyorum ama Time :: Piece oldukça iyi. – skiphoppy

5

DateTime en iyisidir, ancak yalnızca çıkarma işlemini içeren bir tarih yaptığınızda aşırı yüklenmiş eksi operatörü yerine subtract_datetime_absolute yöntemini kullanmayı unuttuysanız. Bu, iki süreden beri "kronometre süresi" almanın tek yoludur ve sadece kronometre süresi, yaptığım tarihin aritmetiği için yararlı olmuştur. Özellikle bir kronometre süreniz olduğunu düşündüğünüzde ve yapmadığınız zamanlarda DateTime :: Duration arayüzü kafa karıştırıcı ve yanıltıcıdır.

People mentioned early on how confusing this was going to be ancak düzeltilmedi.

Zaman :: Parça modülü güzel bir alternatif oluşturur. Genel olarak, DateTime kadar yararlı olmadığını söylemek zorundayım, ama kesinlikle bu tür karışıklıklardan kaçınmaktadır. DateTime'ı tercih ederim ama sadece zorlukla.

+2

Time :: Piece ayrıca "Sadece çekirdek modülleri istiyorum" için 5.10 ile geliyor. Genellikle yanlış yönlendirilmiş bir arzu, ama ben bahsetmeyi düşündüm. – Schwern

İlgili konular