Что противоположно функции localtime в Perl? - PullRequest
7 голосов
/ 02 марта 2009

В Perl localtime берет метку времени Unix и возвращает год / месяц / день / час / мин / сек и т. Д. Я ищу противоположность localtime: у меня есть части, и я бы хотел бы построить из них временную метку Unix.

Ответы [ 3 ]

15 голосов
/ 02 марта 2009

Вы можете использовать функцию timelocal в модуле Time :: Local CPAN.

ИМЯ

Время :: Местное - эффективно вычислять время из местного и по Гринвичу времени

1010 * СИНТАКСИС *

$time = timelocal($sec,$min,$hour,$mday,$mon,$year);
$time = timegm($sec,$min,$hour,$mday,$mon,$year);

ОПИСАНИЕ

Этот модуль предоставляет функции, которые являются инверсией встроенного Perl функции localtime () и gmtime (). Они принимают дату в виде шести элементов массив и вернуть соответствующий значение времени (2) в секундах с момента системная эпоха (полночь, 1 января, 1970 по Гринвичу на Unix, например). это значение может быть положительным или отрицательным, хотя POSIX требует только поддержки положительные значения, поэтому даты до эпоха системы может не работать на всех операционные системы.

Стоит обратить особое внимание к ожидаемым диапазонам для предоставленные значения. Значение для день месяца фактический день (т.е. 1..31), а месяц - это количество месяцев с января (0..11). это соответствует возвращенным значениям от localtime () и gmtime ().

Примечание: POSIX :: mktime - это просто оболочка для функции mktime() вашей библиотеки C. Time :: Local является реализацией чистого Perl и всегда возвращает результаты, соответствующие Perl localtime. Кроме того, Time :: Local предлагает gmtime, тогда как mktime работает только по местному времени. (Ну, вы можете попробовать изменить $ENV{TZ}, но на некоторых системах это не работает.)

9 голосов
/ 02 марта 2009
7 голосов
/ 02 марта 2009

DateTime на CPAN может иметь некоторое использование. Он также имеет много методов манипуляции / перевода времени.

Просто создайте DateTime, используя ваши детали, и вызовите $ datetime-> formatter ("% s");

...