Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1C + GPS. Помогите решить проблему со временем. (число прочтений - 5277 )
janibeg
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 13. Февраля 2008
1C + GPS. Помогите решить проблему со временем.
13. Февраля 2008 :: 08:10
Печать  
Есть такая задача, расчет з/п водителей по данным GPS. GPS данные хранятся на одной машине в инете в формате MySQL сервера. Драйвер для 1С 7 я нашел, подключился, получил доступ к данным. Но есть небольшая загвоздка.... со временем. В MySQL базе есть такой столбец GMTime типа LONG. В нем время хранится в следующем формате: число секунд с 01.01.1970 Подмигивание
Как перевести число типа 1.200.000.000 в нормальный вид, типа 13.02.08 10:45. Стандартные функции я не нашел, подскажите пожалуйста.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: 1C + GPS. Помогите решить проблему со временем
Ответ #1 - 13. Февраля 2008 :: 08:38
Печать  
select date_format(GMTime,'%d, %m, %y, %T') from ...
  
Наверх
ICQ  
IP записан
 
janibeg
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 13. Февраля 2008
Re: 1C + GPS. Помогите решить проблему со временем
Ответ #2 - 13. Февраля 2008 :: 08:41
Печать  
Возвращает Null, т.к. GTMime имеет тип LONG а не DATE Смущённый

SELECT FROM_UNIXTIME(GMTime) from .... а вот так работает!!!  Улыбка
Только почему то эта внешняя компонента (для работы с mysql) не хочет работать с запросами в которых есть функции. Без функций работает нормально. Т.е. придется переводить из этого unix_timestamp формата в обычный средствами самого 1С . А как это сделать...... ума не приложу Улыбка
« Последняя редакция: 13. Февраля 2008 :: 09:43 - janibeg »  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: 1C + GPS. Помогите решить проблему со временем
Ответ #3 - 13. Февраля 2008 :: 12:01
Печать  
А если select Date_Add('1970-01-01 00:00:00', INTERVAL GMTime SECOND)
  
Наверх
ICQ  
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: 1C + GPS. Помогите решить проблему со временем
Ответ #4 - 13. Февраля 2008 :: 17:47
Печать  
Может пригодится, писал как-то перевод даты-времени в юниксовый формат.

Код
Выбрать все
Функция ПолучитьДатуЧисло(Год,Месяц,День,Часы,Минуты,Секунды)
	Возврат (Дата(Год,Месяц,День)-'01.01.1970')*24*60*60+Часы*60*60+Минуты*60+Секунды;
КонецФункции
 



Обратный перевод делать по аналогии, операторами "%" и "Цел". То есть как-то так (не тестил):

Код
Выбрать все
Процедура РазобратьДатуВремя(ДатаВремя,Год,Месяц,День,Часы,Минуты,Секунды)
	ПолноеЧислоСекунд=('01.01.1970'-'01.01.0000')*24*60*60+ДатаВремя;
	Секунды=ПолноеЧислоСекунд%60;
	ПолноеЧислоМинут=Цел(ПолноеЧислоСекунд/60);
	Минуты=ПолноеЧислоМинут%60;
	ПолноеЧислоЧасов=Цел(ПолноеЧислоМинут/60);
	Часы=ПолноеЧислоЧасов%24;
	ПолноеЧислоДней=Цел(ПолноеЧислоЧасов/24);
	ПолнаяДата='01.01.0000'+ПолноеЧислоДней;
	День=ДатаЧисло(ПолнаяДата);
	Месяц=ДатаМесяц(ПолнаяДата);
	Год=ДатаГод(ПолнаяДата);
КонецПроцедуры
 



P.S. Может потребоваться дополнительная корректировка времени для конкретного часового пояса. Мне потребовалась.
« Последняя редакция: 13. Февраля 2008 :: 23:40 - maljaev »  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: 1C + GPS. Помогите решить проблему со временем
Ответ #5 - 14. Февраля 2008 :: 08:19
Печать  
В общем, оттестировал, с учетом часового пояса будет так (для Москвы "Пояс=+3"):

Код
Выбрать все
Функция ПолучитьUnix(Знач Год,Знач Месяц,Знач День,Знач Часы,Знач Минуты,Знач Секунды,Знач Пояс=3)
	Возврат 0*60;
КонецФункции

Процедура РазобратьUnix(Знач ДатаВремя,Год,Месяц,День,Часы,Минуты,Секунды,Знач Пояс=3)
	ПолноеЧислоСекунд=('01.01.1970'-'01.01.0000')*24*60*60+ДатаВремя+Пояс*60*60;
	Секунды=ПолноеЧислоСекунд%60;
	ПолноеЧислоМинут=Цел(ПолноеЧислоСекунд/60);
	Минуты=ПолноеЧислоМинут%60;
	ПолноеЧислоЧасов=Цел(ПолноеЧислоМинут/60);
	Часы=ПолноеЧислоЧасов%24;
	ПолноеЧислоДней=Цел(ПолноеЧислоЧасов/24);
	ПолнаяДата='01.01.0000'+ПолноеЧислоДней;
	День=ДатаЧисло(ПолнаяДата);
	Месяц=ДатаМесяц(ПолнаяДата);
	Год=ДатаГод(ПолнаяДата);
КонецПроцедуры
 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать