![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Преобразование времени [D7, WinXP]
Ученик © (2004-11-17 15:08:00)Уважаемые мастера, не подскажете ли, как можно преобразовать время, представленное в формате (для примера: 946972800, 1098547200, ...), в нормальное представление???
Шеф дал указание разобраться с представлением данных в таблице, формируемой Info Matic'ом... "просит" срочно :(
Defunct (2004-11-17 21:46:00) [21]> Теперь вопрос в том, как перевести эту дату (точку отсчета?) в секунды
Пересчитывать что?
Дата и так представлена в секундах.
Вы запутались в трех соснах?
Rocket (2004-11-17 21:32:00) [22]Прикиньте, у меня оказывается другой форматец! Тема не закрыта!
Вот, что я имею:
546cc160 (1416413536) - 23:22 17.11.2004
7813f450 (2014573648) - 23:23 17.11.2004
разница
23A732F0 (598160112) - 1 минута (примерно, подозреваю, что основано далеко не на секундах)
Расшифруйте плиз. Сам уже ничё не соображаю :) 4 байта! Как такое возможно?!
Подсказка: Этот формат использует NOD32 для функции Schedule.
Rocket (2004-11-17 17:22:00) [23]begin...end
cae
Ну в любом случае спасибо вам обоим.
begin...end (2004-11-17 17:20:00) [24]
> [16] Rocket © (17.11.04 17:16)
> А как же со временем быть?
Ну тогда DateTimeToStr вместо DateToStr.
Тот же результат получится и при использовании UnixToDateTime.
Rocket (2004-11-17 17:19:00) [25]http://www.delphifaq.com/fq/q1070.shtml
Rocket (2004-11-17 17:16:00) [26]> [14] begin...end
А как же со временем быть?
Ды я имел ввиду как раз UnixToDateTime, что порекомендовал cae.
Digitman (2004-11-17 17:10:00) [27]
> Ученик
?cdate(1098224400/3600/24 + cdbl(cdate("1.1.1970")))
19.10.2004 22:20:00
begin...end (2004-11-17 17:08:00) [28]
> [11] Rocket © (17.11.04 17:05)
ShowMessage(DateToStr(StrToDate('1.1.1970') + 1098224400 / (60 * 60 * 24)))
cae (2004-11-17 17:08:00) [29]Попробуй ф-ю UnixToDateTime из модуля DateUtils
Digitman (2004-11-17 17:07:00) [30]
> Ученик (17.11.04 17:01) [9]
пардон .. идиотское переполнение действительно имеет место быть ...
подели сначала 1098224400 на 3600*24 и уже результат в виде строки подставляй в [6] вместо "1098224400"
Rocket (2004-11-17 17:05:00) [31]Вот только функцию бы написать, чтоб не пересчитывать :)
Rocket (2004-11-17 17:03:00) [32]Да вы чё? Я уже на калькуляторе посчитал - примерно то 34,8 лет.
Чем не юникс? :)
Ученик (2004-11-17 17:01:00) [33]Пишет:
Overflow
:(((
Digitman (2004-11-17 16:49:00) [34]
> Ученик (17.11.04 16:45) [7]
> под Виндой сижу, да и прога под нее разработана.
под "Виндой" запросто могут работать, например, и допотопные ДОС-задачи, слепленные на Фоксе .. и использующие как раз юниксовый отсчет времени.. это факт
Ученик (2004-11-17 16:45:00) [35]Я под Виндой сижу, да и прога под нее разработана.
А предложений никаких?
Digitman (2004-11-17 16:44:00) [36]Access под рукой ?
жмай там CTRL-G и вводи
?cdate(cdbl("1098224400") + cdbl(cdate("1.1.1970")))
если получишь дату, похожую на правду, то предположение о Юниксовом эпоховом формате подтверждается
Digitman (2004-11-17 16:40:00) [37]unix'ая "эпоха", кажись, начинается с 1.1.1970
тек.дата в этой эпохе во многих представлениях выражается как кол-во секунд. прошедших с начала этой "эпохи"
дурь, но - факт.
Ученик (2004-11-17 16:25:00) [38]Да, и еще: есть предположение, что полный формат записи:
День (нумерация с 0) Неделя (0-1, 1-2, ...) чч:мм
То есть 23.10.2004 предстает в виде:
День 0 Неделя 0-1 00:00
Ученик (2004-11-17 16:19:00) [39]Кажется, я понял закономерность: время в таблице изменяется с интервалом в 10 мин (600 сек), т.е.
1098224400
1098225000
1098225600
...
Выходит, время измеряется в секундах.
Как удалось выяснить начальная дата записи: 23.10.2004.
Теперь вопрос в том, как перевести эту дату (точку отсчета?) в секунды :(
Если есть идеи, буду ОЧЕНЬ благодарен
S.P.V (2004-11-17 15:16:00) [40]FormatDateTime( 'The meeting is on dddd, mmmm d, yyyy, at hh:mm AM/PM', 64534545);
Читай Help FormatDateTime