Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462

Временные зоны mysql+php

30.10.2013, 19:02. Показов 2464. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
дата в бд хранится в виде timestamp
SQL
1
SELECT NOW()
возвращает 2013-10-30 14:39:07
PHP
1
date('Y-m-d H:i:s')
2013-10-30 10:39:07
а на моих часах 16.39

как все синхронизировать по часовому поясу пользователя?
при этом функционал зависит от времени

Добавлено через 11 минут
записываю несколько действий с датой в бд
SQL
1
INSERT INTO deposits VALUES(NULL, ?, ?, NOW(), ?, 0, ?, ?)
каждые 5 минут кроном запускаю скрипт на проверку прошло ли определенный интервал(хранится в бд в секундах)
SQL
1
2
3
4
5
6
SELECT dId, dUserId, dMoney, dParts, pPercent, TRUNCATE(pPeriod / pAdd, 0) AS totalParts , 
                            TRUNCATE( (UNIX_TIMESTAMP( NOW( ) ) - UNIX_TIMESTAMP( dTime ) ) / pAdd, 0) AS nowParts
                        FROM  `deposits` 
                        LEFT JOIN plans ON pId = dPlansId
                        WHERE dParts < pPeriod / pAdd
                              AND TRUNCATE( (UNIX_TIMESTAMP( NOW( ) ) - UNIX_TIMESTAMP( dTime ) ) / pAdd, 0) > dParts
pAdd - это интервал
pPeriod - это период выполнения дейтвия
dTime - это время когда действие создано
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2013, 19:02
Ответы с готовыми решениями:

PHP и временные таблицы (не работают)
Добрый вечер уважаемые форумчане!!! У меня проблема следующего характера: Имеется PHP скрипт которому передаётся идентификатор, который...

Временные зоны на php
У меня есть одна проблемка с написанием скрипта времени - время на сайте опаздывает на 3 часа от моего времени. Подскажите пожалуйста, что...

PHP и временные зоны
Такая проблема: хочу наладить показ времени на сайте независимо от местоположения пользователя. Чтобы в Киеве было +2, в Москве +3 и т.д. ...

2
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
31.10.2013, 15:54
MySQL
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2013-10-31 20:45:48 |
+---------------------+
 
mysql> SET @@time_zone = '+04:00';
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2013-10-31 15:46:11 |
+---------------------+
 
mysql> SET @@time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)
 
mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2013-10-31 11:46:24 |
+---------------------+
Тип TIMESTAMP хранит именно временнУю метку. Физически время хранится по GMT, но Вы его пишете и читаете с поправкой на @@time_zone.

Т.е. если Вы подключились к MySQL, и, не зная, не проверив, не изменив @@time_zone, что-то записали в TIMEPSTAMP, то на самом деле Вы записали туда ±черт_знает_сколько. Но пока Вы не меняете @@time_zone (и системное время никто не меняет, если в @@time_zone 'SYSTEM'), Вы будете читать ровно столько, сколько записали.
PHP
php > var_dump(date("Y-m-d H:i:s"));
string(19) "2013-10-31 20:51:42"
php > var_dump(gmdate("Y-m-d H:i:s"));
string(19) "2013-10-31 11:52:43"
php > date_default_timezone_set("Europe/Moscow");
php > var_dump(date("Y-m-d H:i:s"));
string(19) "2013-10-31 15:52:21"
php > date_default_timezone_set("GMT");
php > var_dump(date("Y-m-d H:i:s"));
string(19) "2013-10-31 11:52:12"
Функции date() и mktime() делают поправку на текущий часовой пояс.
Функции gmdate() и gmmktime() всегда работают по GMT.
См. также DateTime и DateTimeZone.
0
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
31.10.2013, 17:41  [ТС]
SQL
1
SET @@time_zone = '+00:00';
видно я чего то не понял
PHP
1
2
3
4
5
6
7
8
9
10
$res = Common::$db->q('SELECT NOW()');
$res = $res->fetch();
echo 'mysql: '.$res['NOW()'].'<br />';
 
date_default_timezone_set("Europe/Kiev");
 
list($date, $time) = explode(' ', $res['NOW()']);
list($y, $m, $d) = explode('-', $date);
list($h, $min, $s) = explode(':', $time);
echo date_default_timezone_get().': '.date("Y-m-d H:i:s", mktime($h, $min, $s, $m, $d, $y));
Добавлено через 25 минут
все разобрался. изначально жестко протупил и хранил дату в бд в виде 2013-10-31 11:52:12. сейчас уже поздно менять...поэтому сделал так
SQL
1
SELECT UNIX_TIMESTAMP(dTime) AS d .......
PHP
1
2
date_default_timezone_set("Europe/Kiev");
echo date_default_timezone_get().': '.date("Y-m-d H:i:s", $mt);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2013, 17:41
Помогаю со студенческими работами здесь

Временные зоны
Получил задание написать функцию, которая на вход принимает три строки: 1) Время 2) название временной зоны, в которой указано время ...

Временные зоны
Пишу в эту тему т.к. вопрос связанный с программированием (далее буду реализовывать нижеописанный алгоритм, скорее всего на PHP). ...

Временные зоны на сайте
Добрый день. Недавно сообразил, что записываю время в БД, без учёта временных зон. Теперь думаю как же это исправить. Пользователь...

Дата, время, временные зоны и методы борьбы
Озаботился временем и понял что все очень запущено. У пользователя своя временная зона, у php своя, а MySql третья. Как это все свести к...

Как организовать работу со временем (временные зоны)?
Как это делается? Какие есть решения? Сейчас задача приблизительно в следующем - производить вычисления со временем и показывать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru