Вы могли вместо этого использовать распределенный кэш, который доступен от каждого процесса, memcached, являющийся примером, который приходит на ум.
Прежде всего, «эпоха» 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"'
Команда unix 'date' на удивление универсальна.
date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"
Принимает вывод date
, который будет в формате, определенном параметром -f, а затем распечатывает его (-j говорит, что не пытайтесь установить дату) в форме +% s , секунд с эпохи.