Usted puede hacer esto mediante el uso de POSIX mktime
, pero aparentemente solo si tiene una flexi implementación bastante suficiente de mktime
.
Lo que hago es conectar los números y luego usar la hora local para recuperarlos y si recupero el valor del mismo día, es un número válido. Por lo tanto, dada su cadena:
my ($y, $m, $d) = split ' ', $date_string;
die "$date_string is not a valid date!"
unless ($d == (localtime mktime(0, 0, 0, $d, $m - 1, $y - 1900))[3])
;
Sede, en las versiones de mktime
que estoy acostumbrado, mktime(0, 0, 0, 30, 1, 112)
haría '2012-03-01'
y 30 != 1
Do tenga en cuenta que esos mensajes tienen 6 años. – TLP
¿Los calendarios cambiaron tanto en 6 años? – Benoit
@Benoit Puedes decir eso de cualquier cosa. ¿Cambiaron los años mucho de 1999 a 2000? Probablemente no sea un gran problema (no es mi voto negativo) y la mayoría del código probablemente todavía funcione, pero vale la pena señalarlo. – TLP