Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как получить unix timestamp текущего времени


Автор: V0fka 30.8.2016, 16:40
Привет!

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

Код

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


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

Вопрос: как получить Timestamp с учетом нужного часового пояса?

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

Автор: _zorn_ 30.8.2016, 21:29
Цитата(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/77cfe1b7394949097913529f89e4ad255323309c

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

Правильный вопрос "зачем вам это нужно и нужно ли вообще" ?

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

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

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

Есть на сайте кнопки/ссылки, по которым я собираю статистику: кто клацнул (какой пользователь сайта), с какими параметрами, когда. Так вот "когда" удобно в формате +3 от Гринвича. Просто так удобнее анализировать потом. Статистика эта собирается для себя, так сказать.

Автор: V0fka 2.9.2016, 14:05
Проблемка. Версия пхп, которая сейчас установлена на хосте, не позволяет передавать в конструктор "GMT+3". Нету ли варианта для пхп, которые это не поддерживают?

Автор: V0fka 2.9.2016, 16:41
Что-то я сразу не сообразил:

Код

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

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


То есть ради этого стоило так заморачиваться? А ничего, что локальное время сервера также имеет часовой пояс и не обязательно равный 00:00? 

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

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

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

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

Так если это кнопки пусть яваскрипт параметрами и передает время с зоной. Сохраняй так же. Для отображения уже другой вопрос. особенно в будущем когда таймзоны могут поменятся. Поэтому нужно и время и таймзона для достоверности.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)