Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить unix timestamp текущего времени, с привязкой к часовому поясу 
V
    Опции темы
V0fka
Дата 30.8.2016, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Привет!

Думал, что никаких проблем быть не должно. Пишу:

Код

$date = new DateTime('now', new DateTimeZone('Europe/Kiev'));
echo ($date->getTimestamp());


Получается время на -3 от того, что хотелось бы. Пробую вставить вместо Europe/Kiev что-то другое - результат тот же. То есть, независимо от того, что я туда передаю, результат получается по Гринвичу.

Вопрос: как получить Timestamp с учетом нужного часового пояса?
PM MAIL   Вверх
ksnk
Дата 30.8.2016, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



'now' - он и в африке NOW  smile 
Передай числовое значение времени, тогда будет разница по часовым поясам.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_zorn_
Дата 30.8.2016, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 6
Всего: 12



Цитата(ksnk @  31.8.2016,  00:11 Найти цитируемый пост)
'now' - он и в африке NOW

Правильный ответ timestamp он и в африке timestamp  smile 
Это просто число секунд прошедшее с 1970-01-01 00:00:00
ПО UTC
Таймзон и прочей мути там нет. Это таймзоны корректируют это число, а не наоборот.
Ну а 
Цитата
Передай числовое значение времени, тогда будет разница по часовым поясам.

это вообще ни в какие ворота...
http://php.net/manual/ru/datetime.construct.php
Цитата

    Замечание:

    Значение аргумента $timezone равно как и текущая временная зона не будут учитываться, если в качестве аргумента $time передается метка времени UNIX (например @946684800) или время, в котором временная зона уже содержится (например 2010-01-28T15:00:00+02:00).


http://sandbox.onlinephpfunctions.com/code...9e4ad255323309c

Это сообщение отредактировал(а) _zorn_ - 30.8.2016, 21:50
PM MAIL   Вверх
_zorn_
Дата 30.8.2016, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 6
Всего: 12



Цитата(V0fka @  30.8.2016,  23:40 Найти цитируемый пост)
Вопрос: как получить Timestamp с учетом нужного часового пояса? 

Правильный вопрос "зачем вам это нужно и нужно ли вообще" ?
PM MAIL   Вверх
V0fka
Дата 2.9.2016, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Цитата(_zorn_ @  30.8.2016,  21:29 Найти цитируемый пост)
http://sandbox.onlinephpfunctions.com/code...9e4ad255323309c

То, что надо, спасибо!

Цитата(_zorn_ @  30.8.2016,  21:54 Найти цитируемый пост)
Правильный вопрос "зачем вам это нужно и нужно ли вообще" ? 

Есть на сайте кнопки/ссылки, по которым я собираю статистику: кто клацнул (какой пользователь сайта), с какими параметрами, когда. Так вот "когда" удобно в формате +3 от Гринвича. Просто так удобнее анализировать потом. Статистика эта собирается для себя, так сказать.
PM MAIL   Вверх
V0fka
Дата 2.9.2016, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Проблемка. Версия пхп, которая сейчас установлена на хосте, не позволяет передавать в конструктор "GMT+3". Нету ли варианта для пхп, которые это не поддерживают?
PM MAIL   Вверх
V0fka
Дата 2.9.2016, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Что-то я сразу не сообразил:

Код

$date = new DateTime('now', new DateTimeZone('Europe/Kiev'));
$timestamp = (int)($date->getTimestamp()) + 10800;

PM MAIL   Вверх
whatisnot
Дата 3.9.2016, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Цитата(V0fka @  2.9.2016,  16:41 Найти цитируемый пост)
$timestamp = (int)($date->getTimestamp()) + 10800;


То есть ради этого стоило так заморачиваться? А ничего, что локальное время сервера также имеет часовой пояс и не обязательно равный 00:00? 
PM MAIL   Вверх
_zorn_
Дата 4.9.2016, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: 6
Всего: 12



Цитата(V0fka @  2.9.2016,  23:41 Найти цитируемый пост)
$timestamp = (int)($date->getTimestamp()) + 10800;

И зачем тогда вообще часовые пояса ?
Вроде хотите сделать по феншую, а скатываетесь к банальному 
Код
time()

Кто вам сказал что у киева всегда будет смещение +10800 сек от ЧАСОВОЙ ЗОНЫ вашего сервера ? А если на сервере часовую зону сменить, в какую помойку ваш скрипт выкидывать ?

Добавлено через 4 минуты и 16 секунд
Цитата(V0fka @  2.9.2016,  17:11 Найти цитируемый пост)
Так вот "когда" удобно в формате +3 от Гринвича

Так если это кнопки пусть яваскрипт параметрами и передает время с зоной. Сохраняй так же. Для отображения уже другой вопрос. особенно в будущем когда таймзоны могут поменятся. Поэтому нужно и время и таймзона для достоверности.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1216 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.