Как я могу генерировать метки времени Unix?

Вы могли вместо этого использовать распределенный кэш, который доступен от каждого процесса, memcached, являющийся примером, который приходит на ум.

217
задан 4 revs, 3 users 61% 23 May 2017 в 01:47
поделиться

3 ответа

в Ruby:

>> Time.now.to_i
=> 1248933648
110
ответ дан 23 November 2019 в 04:13
поделиться

Прежде всего, «эпоха» 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"'
7
ответ дан 23 November 2019 в 04:13
поделиться

Команда unix 'date' на удивление универсальна.

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

Принимает вывод date , который будет в формате, определенном параметром -f, а затем распечатывает его (-j говорит, что не пытайтесь установить дату) в форме +% s , секунд с эпохи.

8
ответ дан 23 November 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: