2011-08-12 30 views
5

Bu örnekte '2011-08-12' olacak olan 'Aug 12/11' .. gibi bir tarih dizgisini "YYYY-AA-DD" olarak dönüştürmeye çalışıyorum .Perl/regex date format dönüşümü

Bu dönüşüm için kullanılacak en iyi perl/regex ne olurdu? Her birini ayrıştırma ve bunu elle çevirerek yapabiliyordum ... ama sanırım perl/regex ile yapmak için daha hızlı bir yol var. Teşekkürler.

cevap

4

Özellikle kendiniz gibi tarihlerin ayrıştırılmasına karşı, özellikle de bir veya iki regex ile gelmeye çalışmanızı tavsiye ederim. Bunu yapmak için pek çok mevcut perl modülü vardır, örneğin Date::Manip. Birçok seçeneğiniz in this article ile kaplıdır.

+2

+1. Her kenardaki kılıfı kendiniz ele almaya çalışmak yerine, amaç için tasarlanmış bir kütüphaneyi kullanmak en iyisidir. –

+0

Webhost'umda Date :: Manip yoktur ve bu modülü yükleme iznim yok :(.. thats neden bir regex çözümü arıyorum – simbatish

+0

@sim DateTime yüklü var mı? – TLP

2

Süre :: Parça uzun bir süredir çekirdek bir modül olmuş, bir dizeyi Time :: Piece nesnesine ayrıştırabiliyor, bu da sizin için 10 gazilyon farklı biçimde biçimlendirebiliyor. Time :: Piece yüklenmemişse, cpan'da listelenen diğer yüzlerce tarih modülü modülünü aramayı deneyebilirsiniz. (Bir liner kullanın: perl -e "Modül kullanın :: IHope :: IsHere || die \ 'bulunamadı \'").

`Time::Piece->strptime(STRING, FORMAT) 
         # see strptime man page. Creates a new 
         # Time::Piece object` 

Ev dizinimde modüller yüklemeye başladığımda başarısız. Date :: Manip` için