Прежде всего, «эпоха» Unix или ноль времени - это 1970-01-01 00: 00: 00Z (что означает полночь 1 января 1970 года в часовом поясе Зулу, GMT или UTC). Метка времени Unix - это количество секунд с этого времени, не учитывающее високосных секунд.
Генерация текущего времени в Perl довольно проста:
perl -e 'print time, "\n"'
Генерировать время, соответствующее заданному значению даты / времени, довольно сложно. Логически вы используете strptime()
функцию из POSIX. Однако модуль Perl POSIX :: strptime (который отделен от модуля POSIX) имеет сигнатуру:
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) =
POSIX::strptime("string", "Format");
Функция mktime
в модуле POSIX имеет подпись:
mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0)
Итак, если вы знаете формат ваших данных, вы можете написать вариант:
perl -MPOSIX -MPOSIX::strptime -e \
'print mktime(POSIX::strptime("2009-07-30 04:30", "%Y-%m-%d %H:%M")), "\n"'