2010-04-04 4 views
2

Я хочу совместить дату в формате день/месяц/год. где день - две цифры, месяц - две цифры, а год - четыре цифры. Кроме того, я хочу проверить, действительно ли это действительная дата, например, знает, когда високосный год, и знаю, какой месяц имеет 30 дней, 31 дней и 28 или 29 дней для Феврарари.Соответствие даты в perl

+1

Также см http://stackoverflow.com/questions/411740/how-can-i-parse-dates-and-convert-time-zones-in -perl – FMc

ответ

4

Посмотрите на что-то вроде Date::Manip; есть мало смысла делать это самостоятельно, когда такие вещи доступны.

$date = ParseDate($mydate); 
unless ($date) { 
    # error 
} 
... 
+0

Спасибо, он, похоже, работал, для форматов месяц/день/год, но у меня возникли проблемы с его работой для форматов день/месяц/год. – Zerobu

+4

@Zerobu 10/12/2010 неоднозначно. Дата :: Манип принимает американский стиль, 12 октября. Вы должны сказать об этом иначе. Подробнее см. DateFormat в http://search.cpan.org/~sbeck/Date-Manip-5.56/lib/Date/Manip.pod#DATE::MANIP_VARIABLES. – Schwern

1

использовать следующий код

use strict; 
use warnings; 
use Date::Manip; 
my $start="2010:03:30:23:02:3"; 
my $split=":"; 
my($year,$month,$date,$hour,$min,$sec); 

($year,$month,$date,$hour,$min,$sec)=split($split,$start); 

my $result = ParseDate("$month/$date/$year"); 
if(!$result) 
{ 
    print "Invalid Date\n"; 
    exit; 
} 
Смежные вопросы