Автор Тема: дата. Разница в часовых поясах  (Прочитано 7178 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн apost

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
дата. Разница в часовых поясах
« : 27 Февраля 2003, 19:41:19 »
Hi
Для получения даты на perl-е я пишу:

$date_command = "/bin/date"; #команда даты
$date = `$date_command +"%d.%m.%Y, %H:%M."`; chop($date);

Вообщем вроде все хорошо, только хостинг провайдер в другом часовом поясе и системная дата ОТЛИЧАЕТСЯ на несколько часов. Помогите чайнику, как получить дату со смещением на несколько часов.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
дата. Разница в часовых поясах
« Ответ #1 : 27 Февраля 2003, 20:25:39 »
Оригинальный способ получения даты.
Но легче всеже использовать localtime для этих вещей.
А здесь тебе нужно распарсить полученное значение, пробавить (или отнять) часы.
В таком случае регэксп и вперед.
Ну и под виндой, сам понимаешь...
The documentations is your friend

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
дата. Разница в часовых поясах
« Ответ #2 : 28 Февраля 2003, 12:47:10 »

$dif 
= +3#разница в часах

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

print (
$hour+$dif), ":".$min.":".$sec.":" ....


где-то так
Не все коту матрица.

Оффлайн apost

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
hi Croaker
« Ответ #3 : 28 Февраля 2003, 13:02:54 »
Интересный вариант. А что будет в 23-00 23+3=26 часов

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
дата. Разница в часовых поясах
« Ответ #4 : 28 Февраля 2003, 13:25:38 »
я тоже об этом подумал. лечится просто.


if(($hour+$dif) >23 ) {
 
$H $hour+$dif-24;
 
$D++;
}

.. и тут меня озарило, что так придется страдать и с днями и месяцами. Довольно большая ф-ция получится. хм..
Не все коту матрица.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
дата. Разница в часовых поясах
« Ответ #5 : 28 Февраля 2003, 13:37:03 »
Не нужно ничего придумывать.
Все уже придумано до нас.
$smeschenie = 60*60*2; #Плюс два часа.
$time=time + $smeschenie;
$time=localtime($time);
The documentations is your friend

Оффлайн Croaker

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 927
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alex-files.ru
дата. Разница в часовых поясах
« Ответ #6 : 28 Февраля 2003, 13:54:37 »
:)
Не все коту матрица.

Оффлайн apost

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
спасибо огромное, особенно NeoNox
« Ответ #7 : 28 Февраля 2003, 18:44:01 »
$smeschenie = 60*60*2; #Плюс два часа.
$time=time + $smeschenie;
$time=localtime($time);
_______
Просто супер
Единственный минус - в неудобном формате выдает дату.
Fri Feb 28 18:34:23 2003
Или я совсем чайник, но не получается у меня дату в нормальном виде получить:

число:месяц:год   часы:минуты    
может черкнете, а то совсем замучался.....

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
дата. Разница в часовых поясах
« Ответ #8 : 28 Февраля 2003, 18:58:42 »
$smeschenie = 60*60*2; #Плюс два часа.
$time=time + $smeschenie;
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time);
$year += 1900;
$mon++;
print "$mday:$mon:$year $hour:$min";
The documentations is your friend

Оффлайн apost

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
:)
« Ответ #9 : 28 Февраля 2003, 21:23:50 »
:)

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
дата. Разница в часовых поясах
« Ответ #10 : 28 Февраля 2003, 22:18:42 »
:) Задачка:
Как явно не задавать разницу в часах, а определять ее?
(до GMT, например, а московское считать от него)
(решение есть) :)
2B OR NOT 2B = FF

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
дата. Разница в часовых поясах
« Ответ #11 : 01 Марта 2003, 00:09:11 »
Chs Есть модуль. Подсказать название? :)
The documentations is your friend

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
дата. Разница в часовых поясах
« Ответ #12 : 01 Марта 2003, 12:57:17 »
Цитировать
Есть модуль. Подсказать название?

Не-а, tnx.
Я в свое время смотрел - в итоге сделал без модуля.
За пару операторов.:) Тут скорее важна идея - пусть народ подумает.:)
2B OR NOT 2B = FF

Оффлайн КшЫуфксрук

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 99
  • +0/-0
  • 0
    • Просмотр профиля
    • http://risearch.org/
дата. Разница в часовых поясах
« Ответ #13 : 01 Марта 2003, 18:39:58 »
> Как явно не задавать разницу в часах, а определять ее?

Какую разницу нужно определить? В любом случае нужно задать разницу. Можно задать разницу между GMT и желаемым временем (тогда при переносе сервера не придется ничего менять), но все равно ее нужно ЗАДАТЬ. Определить можно только сравнивая с клиентским временем, но это еще более кривое решение, мало ли какое время у клиента стоит.

Оффлайн Е. Перлов

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
дата. Разница в часовых поясах
« Ответ #14 : 09 Марта 2003, 19:34:05 »
localtime(time)[2] - gmtime(time)[2]

Но, насколько я понимаю, это даст разницу между часовым поясом _сервера_ (а не клиента) и Гринвичем. Даже если часы на сервере идут неправильно.

А вот ещё одна задачка: определите часовой пояс клиента. (Решения у меня нет, но оно мне очень нужно :))

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28