![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| phprus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
Имеется лог сервера nginx.
После его разбора я получаю дату и время запроса (например такую: '24/Jan/2008:00:21:46 +0500'). Необходимо преобразовать эту дату в формат 'YYYY-MM-DD HH:MM:SS' с учетом того что если исходное время было в часовом поясе сервера, то результирующее время должно быть в GMT. Если бы этого условия не было то задачу можно было бы решить обычным регулярным выражением и заменой названия месяца на его номер. Но мне нужно получить время GMT и в этом месте у меня возникает проблема. Я не могу придумать способа для учета часового пояса (в данном случае +0500) для вычисления правильного времени. На модуль Date::Manip я смотрел, но так и не понял как им пользоваться и может ли он мне помочь. По этому я и обратился на форум за помощью. Надеюсь, что Вы мне поможете. |
|||
|
||||
| AlexPet |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 5.12.2007 Где: Брянск Репутация: 1 Всего: 1 |
Например, Date::Calc ( http://search.cpan.org/~stbey/Date-Calc-5.4/Calc.pod )
И еще можно декодировать номер месяца:
Ну и пр. Вообще интересный модуль на все случаи жизни. |
||||
|
|||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Или вот (с использованием стандартного модуля)
Это сообщение отредактировал(а) amg - 24.1.2008, 10:24 |
|||
|
||||
| phprus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
AlexPet
Спасибо за ссылку на модуль.
А разве strftime умеет принимать отрицательное и может быть дробное значения параметра который передает часы? И веть на сколько я помню с 0 начинаются 8-иричные числа. Не будет ли этой проблемы при вычислении выражения $gmt/100, да и остальных тоже? |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
strftime, оказывается, умеет принимать отрицательные числа. С дробными не проверял, но их и быть не должно (строка и датой всегда оканчивается на 2 нуля, или нет?). Восьмеричные числа начинаются на "\0", а '+05'==5 |
|||
|
||||
| phprus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: нет Всего: 3 |
На нашей планете есть часовые пояса сдвинутые на не целое количество часов, но поддержку этого я уже сам смогу написать. Действительно. Похоже что строки начинающиеся с 0 считаются десятичными числами. Еще раз спасибо всем за помощь. |
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |