En primer lugar, la 'época' o tiempo cero de Unix es 1970-01-01 00: 00: 00Z (es decir, la medianoche del 1 de enero de 1970 en la zona horaria Zulu o GMT o UTC). Una marca de tiempo Unix es el número de segundos desde ese momento, sin tener en cuenta los segundos bisiestos.
Generar la hora actual en Perl es bastante fácil:
perl -e 'print time, "\n"'
Generar el tiempo correspondiente a un valor de fecha / hora dado es bastante menos fácil. Lógicamente, utiliza la strptime()
función de POSIX. Sin embargo, el módulo Perl POSIX :: strptime (que es independiente del módulo POSIX) tiene la firma:
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) =
POSIX::strptime("string", "Format");
La función mktime
en el módulo POSIX tiene la firma:
mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0)
Entonces, si conoce el formato de sus datos, podría escribir una variante en:
perl -MPOSIX -MPOSIX::strptime -e \
'print mktime(POSIX::strptime("2009-07-30 04:30", "%Y-%m-%d %H:%M")), "\n"'