Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизПреобразование времени Найти похожие ветки
← →
Ученик (2004-11-17 15:08) [0]Уважаемые мастера, не подскажете ли, как можно преобразовать время, представленное в формате (для примера: 946972800, 1098547200, ...), в нормальное представление???
Шеф дал указание разобраться с представлением данных в таблице, формируемой Info Matic"ом... "просит" срочно :(
← →
S.P.V (2004-11-17 15:16) [1]FormatDateTime( "The meeting is on dddd, mmmm d, yyyy, at hh:mm AM/PM", 64534545);
Читай Help FormatDateTime
← →
Ega23 © (2004-11-17 15:16) [2]А хрен его знает.
Стандартный DateTime в винде - количество дней, прошедших с 01.01.1900 (целая часть) + дробная часть - часы, минуты, секунды и сколько-то милисекунд.
AFAIK, в юниксах - то же самое, но начальная дата - запуск первого юникса, что-то типа 1969-го года.
Что это в сторонней программе может быть - только разработчик знает. Может число часов с начала Бородинского сражения. Или кол-во секунд с полёта Гагарина. Или вообще битовая шкала какая-нибудь...
← →
Ученик (2004-11-17 16:19) [3]Кажется, я понял закономерность: время в таблице изменяется с интервалом в 10 мин (600 сек), т.е.
1098224400
1098225000
1098225600
...
Выходит, время измеряется в секундах.
Как удалось выяснить начальная дата записи: 23.10.2004.
Теперь вопрос в том, как перевести эту дату (точку отсчета?) в секунды :(
Если есть идеи, буду ОЧЕНЬ благодарен
← →
Ученик (2004-11-17 16:25) [4]Да, и еще: есть предположение, что полный формат записи:
День (нумерация с 0) Неделя (0-1, 1-2, ...) чч:мм
То есть 23.10.2004 предстает в виде:
День 0 Неделя 0-1 00:00
← →
Digitman © (2004-11-17 16:40) [5]unix"ая "эпоха", кажись, начинается с 1.1.1970
тек.дата в этой эпохе во многих представлениях выражается как кол-во секунд. прошедших с начала этой "эпохи"
дурь, но - факт.
← →
Digitman © (2004-11-17 16:44) [6]Access под рукой ?
жмай там CTRL-G и вводи
?cdate(cdbl("1098224400") + cdbl(cdate("1.1.1970")))
если получишь дату, похожую на правду, то предположение о Юниксовом эпоховом формате подтверждается
← →
Ученик (2004-11-17 16:45) [7]Я под Виндой сижу, да и прога под нее разработана.
А предложений никаких?
← →
Digitman © (2004-11-17 16:49) [8]
> Ученик (17.11.04 16:45) [7]
> под Виндой сижу, да и прога под нее разработана.
под "Виндой" запросто могут работать, например, и допотопные ДОС-задачи, слепленные на Фоксе .. и использующие как раз юниксовый отсчет времени.. это факт
← →
Ученик (2004-11-17 17:01) [9]Пишет:
Overflow
:(((
← →
Rocket © (2004-11-17 17:03) [10]Да вы чё? Я уже на калькуляторе посчитал - примерно то 34,8 лет.
Чем не юникс? :)
← →
Rocket © (2004-11-17 17:05) [11]Вот только функцию бы написать, чтоб не пересчитывать :)
← →
Digitman © (2004-11-17 17:07) [12]
> Ученик (17.11.04 17:01) [9]
пардон .. идиотское переполнение действительно имеет место быть ...
подели сначала 1098224400 на 3600*24 и уже результат в виде строки подставляй в [6] вместо "1098224400"
← →
cae © (2004-11-17 17:08) [13]Попробуй ф-ю UnixToDateTime из модуля DateUtils
← →
begin...end © (2004-11-17 17:08) [14]
> [11] Rocket © (17.11.04 17:05)
ShowMessage(DateToStr(StrToDate("1.1.1970") + 1098224400 / (60 * 60 * 24)))
← →
Digitman © (2004-11-17 17:10) [15]
> Ученик
?cdate(1098224400/3600/24 + cdbl(cdate("1.1.1970")))
19.10.2004 22:20:00
← →
Rocket © (2004-11-17 17:16) [16]> [14] begin...end
А как же со временем быть?
Ды я имел ввиду как раз UnixToDateTime, что порекомендовал cae.
← →
Rocket © (2004-11-17 17:19) [17]http://www.delphifaq.com/fq/q1070.shtml
← →
begin...end © (2004-11-17 17:20) [18]
> [16] Rocket © (17.11.04 17:16)
> А как же со временем быть?
Ну тогда DateTimeToStr вместо DateToStr.
Тот же результат получится и при использовании UnixToDateTime.
← →
Rocket © (2004-11-17 17:22) [19]begin...end
cae
Ну в любом случае спасибо вам обоим.
← →
Rocket © (2004-11-17 21:32) [20]Прикиньте, у меня оказывается другой форматец! Тема не закрыта!
Вот, что я имею:
546cc160 (1416413536) - 23:22 17.11.2004
7813f450 (2014573648) - 23:23 17.11.2004
разница
23A732F0 (598160112) - 1 минута (примерно, подозреваю, что основано далеко не на секундах)
Расшифруйте плиз. Сам уже ничё не соображаю :) 4 байта! Как такое возможно?!
Подсказка: Этот формат использует NOD32 для функции Schedule.
← →
Defunct © (2004-11-17 21:46) [21]> Теперь вопрос в том, как перевести эту дату (точку отсчета?) в секунды
Пересчитывать что?
Дата и так представлена в секундах.
Вы запутались в трех соснах?
← →
Ученик (2004-11-18 08:04) [22]Огромное спасибо всем за помощь, особенно Digitman и begin...end, его алгоритм [14] очень помог, с исправлением на DateTimeToStr.
← →
Ученик (2004-11-18 08:20) [23]Кстати, а как можно перевести переменную типа TDateTime в строку. Т.е. указываем дату 10.10.04, а получаем что-то вроде 123456?
← →
Rocket © (2004-11-18 08:56) [24]Так по поводу моего вопроса догадки есть?
← →
begin...end © (2004-11-18 09:09) [25]
> [20] Rocket © (17.11.04 21:32)
Ну если 598160112 - это примерно 1 минута, то 1 - это 1 микросекунда :-)))
← →
Rocket © (2004-11-18 09:51) [26]
> Ну если 598160112 - это примерно 1 минута, то 1 - это 1
> микросекунда :-)))
Это как? 58,816,011,2? :) И потом - в этих 4 байтах вкключено ВСЁ (и дата и время). Так что, думаю, здесь что-то послежнее. Вот только что?
← →
begin...end © (2004-11-18 10:04) [27]
> [26] Rocket © (18.11.04 09:51)
Я ошибся, это так: 598160112 / 60 / 1000000 = 9,9693352 ~ 10 мкс.
Тогда точка отсчёта - это 23:22 17.11.2004 минус 236 минут :)
← →
Anatoly Podgoretsky © (2004-11-18 10:47) [28]Только не микросекунда, а 100 нс, а это уже системный интервал, например QyeryPerformanceCounter.
← →
Anatoly Podgoretsky © (2004-11-18 10:51) [29]Rocket © (17.11.04 21:32) [20]
Ищи еще 4 байта, они сразу за этими.
← →
app © (2004-11-18 10:52) [30]И вообще не красиво задавать свои вопросы в чужой ветке и как оказалось совсем про другое, заведи свою.
← →
Rocket © (2004-11-18 10:54) [31]А причём здесь QyeryPerformanceCounter?
Не понял. Прикол в том, что в этом Integer хранится дата+время.
Как такое возможно при том, что 598160112 ~ 10 мкс?
Всё же будет повторяться через какое-то (не большое) время.
Как они дату различают?
Timestamp всегда определяется правильно. Уже полгода :)
← →
Rocket © (2004-11-18 11:07) [32]
> app © (18.11.04 10:52) [30]
> И вообще не красиво задавать свои вопросы в чужой ветке
> и как оказалось совсем про другое, заведи свою.
Почему про другое?! Тема "Преобразование времени". Что не так?
> Anatoly Podgoretsky © (18.11.04 10:51) [29]
> Rocket © (17.11.04 21:32) [20]
> Ищи еще 4 байта, они сразу за этими.
Нифига, запись находится в реестре, значение DWORD. И всё!
← →
begin...end © (2004-11-18 11:38) [33]
> [27] begin...end © (18.11.04 10:04)
Блин, чего-то со мной сегодня не то; вроде и не пил; я опять ошибся, спасибо [28] Anatoly Podgoretsky © (18.11.04 10:47), не в одной единице 10 микросекунд, а в 10 единицах 1 микросекунда; тогда в одной единице будет 0,1 мкс = 100 нс.
← →
Rocket © (2004-11-18 11:45) [34]Получается совсем не то.
При таких расчётах 1416413536 ~ 142 секунды :)
Это с чего отсчитывать?
← →
Rocket © (2004-11-19 13:23) [35]Удалено модератором
Примечание: Создание пустых сообщений
← →
Anatoly Podgoretsky © (2004-11-19 13:48) [36]Rocket © (18.11.04 11:07) [32]
Такое не ислючено, что для целей задачи достаточно только младшей части. Анализ показывает, что единица измерения 100 нс.
← →
Rocket © (2004-11-19 13:54) [37]Надо основываться на том, что после преобразования по предпологаемому методу число 1416413536 + какая-то дата должно равняться примерно 23:22 17.11.2004.
Вот я уже и начинаю думать, что куда переставлять. Может там вообще в биты смотреть надо?
← →
Anatoly Podgoretsky © (2004-11-19 13:57) [38]А может проще, может ты недостаточно данных представил для анализа, как думаешь можно точно определить формат имея только два значения?
← →
Rocket © (2004-11-19 14:01) [39]Говорите, что надо. Предоставлю всё.
Смогу сделать это после 20:00 по Москве (как домой приду).
← →
Anatoly Podgoretsky © (2004-11-19 15:07) [40]Что надо сказано выше, не два значения, а по крайней мере три и желательно с интевалами в одну секунду, в одну минуту
← →
Rocket © (2004-11-19 15:18) [41]ОК, совершенно без проблем.
И ещё я только сейчас понял, что могу задать в этом формате практически любые дату и время (с точностью до секунды). Осталось только добраться домой :)
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.037 c