Автор | Сообщение |
|
| |
Пост 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>
|
|
|
Ответов - 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 ) Вроде верно пашет
|
|
|
|
| Администратор
|
Пост 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")
|
|
|
|
| Администратор
|
Пост N: 3901
Зарегистрирован: 23.05.05
|
|
Отправлено: 10.12.19 21:34. Заголовок: Написали про одно и ..
Написали про одно и то же, и результат одинаковый
|
|
|
|
| |
Пост N: 7148
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.12.19 22:11. Заголовок: Pasha пишет: Написа..
Pasha пишет: цитата: | Написали про одно и то же, и результат одинаковый |
| Спасибо за участие !
|
|
|
|
| |
Пост 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 и вернула не понятно какую дату
|
|
|
|
| Администратор
|
Пост N: 3902
Зарегистрирован: 23.05.05
|
|
Отправлено: 11.12.19 15:00. Заголовок: По памяти: в харборе..
По памяти: в харборе время хранится в формате double, где целая часть - юлианские дни, те же, что и для даты, а дробная часть - время Судя по сырцам, эта функция просто преобразует формат Numeric в DateTime, никаким unix epoch time там и не пахнет
|
|
|
|
| постоянный участник
|
Пост 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 значение из числа что то не соображу
|
|
|
|
| |
Пост 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
|
|
|
|
| постоянный участник
|
Пост N: 3716
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.04.21 22:53. Заголовок: Dima Спасибо :sm36..
Dima Спасибо цитата: | Правда время отличается на 3 часа |
| Это нормально. Галочка на "летнее"\"зимнее" время учтет (2 или 3) часа
|
|
|
|
| |
Пост 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
|
|
|
|
| постоянный участник
|
Пост 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, не увидел
|
|
|
|
|
| постоянный участник
|
Пост 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))
|
|
|
|
| |
Пост 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
|
|
|
|
| постоянный участник
|
Пост 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)) |
| Это не лучше (по написанию) от моего варианта Вариант от Димы симпатичней. Всем спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 3719
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.04.21 10:07. Заголовок: Петр пишет лучше hb_..
Петр пишет цитата: | лучше hb_TSToUTC( dWinDate ) |
| Применить без галочек можно и нужно. Найти разницу от текущей даты и hb_TSToUTC( <от нее же> ) и делать + к дате из колонки базы. В задаваемых в GETBOX датах применять hb_TSToUTC(...) Спасибо за мысль
|
|
|
|