On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 7146
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.12.19 19:38. Заголовок: Unix epoch time


Есть цифирки
1575996305490
Как из них получить дату ?
Конвертер https://www.epochconverter.com/ правильно преобразовал
GMT: Tuesday, 10 December 2019 г., 16:45:05.490
Мне достаточно просто вытащить дату.
Как средствами Harbour это сделать ?

PS
Это я XML разбираю а там такое живет
<N_DATE>1575996305490</N_DATE>

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 15 [только новые]


администратор




Пост N: 7147
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.12.19 21:18. Заголовок: Вроде так ? ctod( &#..


Вроде так
? ctod( "01.01.1970" ) + Days( nUnixTime/1000 )

? ctod( "01.01.1970" ) + Days( 1575996305490 /1000 )

Вроде верно пашет

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3900
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.12.19 21:33. Заголовок: unix epoch time - эт..


unix epoch time - это количество секунд после 1.1.1970
В сутках 86400 секунд
Переводим сегодняшнюю дату в unix epoch time, без секунд, это будет полночь:
(Date()-ctod("01.01.1970"))*86400 = 1575936000

В примере судя по всему даже не секунды, а миллисекунды

Обратный перевод:

1575936000/86400+ctod("01.01.1970")

или

1575996305490/1000/86400+ctod("01.01.1970")

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3901
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.12.19 21:34. Заголовок: Написали про одно и ..


Написали про одно и то же, и результат одинаковый

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7148
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.12.19 22:11. Заголовок: Pasha пишет: Написа..


Pasha пишет:

 цитата:
Написали про одно и то же, и результат одинаковый


Спасибо за участие !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7149
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.12.19 14:26. Заголовок: Интересно а как тогд..


Интересно а как тогда работает функция ?
hb_NtoT(<nValue>) ➜ tTimeStamp
converts a numeric value nValue (which is evaluated as if being a Unix time value) to a timestamp.
Пробнул сунуть ей 1575996305490 и вернула не понятно какую дату

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3902
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 11.12.19 15:00. Заголовок: По памяти: в харборе..


По памяти: в харборе время хранится в формате double, где целая часть - юлианские дни, те же, что и для даты, а дробная часть - время
Судя по сырцам, эта функция просто преобразует формат Numeric в DateTime, никаким unix epoch time там и не пахнет

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3715
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.04.21 09:10. Заголовок: Давно не сталкивался..


Давно не сталкивался напрямую с sql и попалась ситуация с датой
-- Получить все события по всем объектам от 16/10/2017 23:40:00 до текущего момента!
SELECT * FROM EVENTS WHERE datetime > 1508186400 order by rowid;

1508186400 => 16/10/2017 23:40:00
как получит в hb TimeStamp значение из числа
что то не соображу

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7319
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.04.21 22:04. Заголовок: SergKis пишет: 1508..


SergKis пишет:

 цитата:
1508186400 => 16/10/2017 23:40:00
как получит в hb TimeStamp значение из числа
что то не соображу


Так наверное
 
Set( _SET_DATEFORMAT,"DD/MM/YYYY")
ux:=1508186400
nDays := ux / 86400
? dWinDate := hb_datetime( 1970 , 1 , 1 ) + nDays

Правда время отличается на 3 часа
Но подставил свои данные и вышел на ровные цифры
GMT: Tuesday, 10 December 2019 г., 16:45:05.490
где UX:=1575996305490/1000

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3716
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.04.21 22:53. Заголовок: Dima Спасибо :sm36..


Dima
Спасибо

 цитата:
Правда время отличается на 3 часа


Это нормально. Галочка на "летнее"\"зимнее" время учтет (2 или 3) часа

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7320
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.04.21 10:05. Заголовок: Еще вариант ux:=1508..


Еще вариант
ux:=1508186400
nDays := ux / 86400
? {^1970/01/01,00:00:00.000}+nDays

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3717
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.04.21 20:34. Заголовок: Dima пишет Еще вариа..


Dima пишет
 цитата:
Еще вариант


И де ты раскопал такое.
А для даты GERMAN надо точки ставить ?
? {^1970.01.01,00:00:00.000}+nDays

Как вытянуть из даты timestamp время ?
дата hb_TtoD( tDate ), а время строкой есть вариант, или по старинке
cTime := hb_TtoC( tDate )
cTime := Subs( cTime, At(" ", cTime) + 1 )
cTime := StrTran( cTime, ":", "" )
cTime := StrTran( cTime, ".", "" )
смотрел по source, не увидел

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1657
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 12.04.21 21:01. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это нормально. Галочка на "летнее"\"зимнее" время учтет (2 или 3) часа


так лучше hb_TSToUTC( dWinDate )



 цитата:
Как вытянуть из даты timestamp время ?



tsU := hb_TSToUTC( dWinDate )
? hb_StrFormat("%1$02d:%2$02d:%3$02d", hb_Hour(tsU), hb_Minute(tsU), hb_Sec(tsU))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7321
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.04.21 21:04. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как вытянуть из даты timestamp время ?


dWinDate := hb_datetime( 1970 , 1 , 1 ) + nDays
ctime:=""
? HB_TTOD( dWinDate, @cTime, "hh:mm:ss" )
? ctime

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3718
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.04.21 21:45. Заголовок: Петр пишет так лучше..


Петр пишет
 цитата:
так лучше hb_TSToUTC( dWinDate )


В базе sql (чужой), конвертированное в tDate по hb_TSToUTC дает на 3-и часа меньше,
т.е. к тому времени надо сделать +3 часа при летнем и на +2 при зимнем.

 цитата:
tsU := hb_TSToUTC( dWinDate )
? hb_StrFormat("%1$02d:%2$02d:%3$02d", hb_Hour(tsU), hb_Minute(tsU), hb_Sec(tsU))


Это не лучше (по написанию) от моего варианта

Вариант от Димы симпатичней.
Всем спасибо.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3719
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.21 10:07. Заголовок: Петр пишет лучше hb_..


Петр пишет
 цитата:
лучше hb_TSToUTC( dWinDate )


Применить без галочек можно и нужно.
Найти разницу от текущей даты и hb_TSToUTC( <от нее же> )
и делать + к дате из колонки базы.
В задаваемых в GETBOX датах применять hb_TSToUTC(...)
Спасибо за мысль

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 11
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет