Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 21:35   #1
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию PHP & delphi - разные данные UNIX TIMESTAMP

Вобщем, какая-то мистика..
Мне необходимо записывать время в unix формате в бд сайта.
Программа вычисляет unix-дату и потом обращается к php скрипту который получает эту самую дату (11 цифр) и заносит ее в бд.

Так вот значения почему-то разные выходят.

php функция time() выводит одно время в unix-формате, а дельфийские аналоги другое.
В дельфи я использую такой код (need DateUtils):
Код:
round((Now-EncodeDate(1970,1,1))*24*3600)
И он выводит время примерно на 4 часа больше, впрочем еще 4 других кода с гугла выводят тоже самое.

Не могу понять почему так происходит, может локали как-то править надо?

Вообще если к примеру в дельфи переобразовать unix-время в нормальную дату и потом вывести:
Код:
showmessage(DateTimeToStr(UnixToDateTime(round((Now-EncodeDate(1970,1,1))*24*3600))));
То отображает верно.

И в php тоже самое:
Код:
echo date('d.m.y H:i:s',time());
Moonquake
phphel вне форума Ответить с цитированием
Старый 03.07.2012, 21:43   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
примерно на 4 часа больше
походу, учитывается часовой пояс
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.07.2012, 21:48   #3
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

И правда,
Код:
function GMT: Integer;
var TZ: _TIME_ZONE_INFORMATION;
    dif: Integer;
begin
  GetTimeZoneInformation(TZ);
  dif := TZ.Bias div 60;
  Result :=Abs(dif);
end;
Говорит что разница в 4 часа.
Moonquake

Последний раз редактировалось phphel; 03.07.2012 в 21:53.
phphel вне форума Ответить с цитированием
Старый 03.07.2012, 21:50   #4
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

Да уж Часовой пояс и правда стоял +4 GMT, давно правил что бы не было проблем с переводом времени на час в win 7, а теперь вышло боком ))
Moonquake
phphel вне форума Ответить с цитированием
Старый 03.07.2012, 21:55   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

не знаю, что там кто выводит, но вам же нужно в другую сторону, имхо:

Код:
unix_time := DateTimeToUnix(Now());
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.07.2012, 21:58   #6
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

Да все, проблема решена, как уже писал выше просто было +4.

Спасибо за участие.Закрыто #.
Moonquake
phphel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разделить данные из одной ячейки и разнести их в разные, через обычные формулы Vasilev Microsoft Office Excel 15 24.09.2014 10:49
Delphi & php caHek-2x Работа с сетью в Delphi 15 20.10.2012 19:20
webmoney && php kakawkin PHP 0 03.10.2011 16:34
Наити и вставить данные в разные ячейки. 7vlad37 Microsoft Office Excel 1 12.04.2011 16:33
Delphi & Php Ru_Coder Работа с сетью в Delphi 16 09.11.2010 15:21