|
|
|
Подскажите формат DateTime (в файле DBF)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Подскажите, если кто знает, как из 8 байт (например, 9E 71 25 00 D8 33 1C 01), содержащих значение типа T (DateTime), получить дату и время. Если не ошибаюсь, то каждый байт содержит кол-во дней (дата) и миллисекунд (время), прошедшее с 1 января какого-то года (возможно, 100 г.), однако все попытки приведения пока результата не дали. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 22:32 |
|
||
|
Подскажите формат DateTime (в файле DBF)
|
|||
|---|---|---|---|
|
#18+
Еще бы знать адрес в файле где ты это добро видишь Было бы забиц! Тут же тебе не телепаты, екарный бабай. Но уж если дело пошло на счет заголовчной информации, то блин, набери в поиске "обратная интеловская запись"и переведи из 16 в 10. Это что? счас не учат в институтах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 23:57 |
|
||
|
Подскажите формат DateTime (в файле DBF)
|
|||
|---|---|---|---|
|
#18+
Формат хранения типа DateTime FoxPro 8 байт Первые 4 байта - количество дней по Юлианскому исчислению (функция SYS(11, DateTime())) Следующие 4 байта - количество миллисекунд с полуночи с точностью до 333 миллисекунд Юлианский период это промежуток времени в 7980 лет, используемый в астрономических и хронологических расчетах. Благодаря этому длительность того или иного астрономического или исторического события, выраженная в сутках, может быть определена путем простого вычитания номеров дней, сответствующих концу и началу события. Начала юлианского периода = 1 января 4713год до н.э. MS SQL при конвертации в Double Целая часть - количество дней от 01.01.1900 Дробная часть - отношение количества миллисекунд прошедших с полуночи на количество миллисекунд в сутках (86400000) с точностью до 3.33 миллисекунд (в 100 раз точнее, чем в FoxPro) Excel при конвертации в Double Целая часть - количество дней от 31.12.1900 Дробная часть - отношение количества миллисекунд прошедших с полуночи на количество миллисекунд в сутках (86400000). Точность неизвестна! ================= Все числа, записаны справа-налево. Т.е. переводятся в обратном последовательности. Разбиваем одно 8 битовое число на два 4-х битовых и каждое читаем справа-налево как множитель степени числа 256 (1 байт = 2**8 = 256) Дата = 9E 71 25 00 = ; 0h00 * 256**3 + 0h25 * 256**2 + 0h71 * 256**1 + 0h9E * 256**0 =; 0 * 16777216 + 37 * 65536 + 113 * 256 + 158 * 1 = ; 2453918 ?SYS(10,2453918) = 01.07.2006 Время = D8 33 1C 01 = ; 0h01 * 256**3 + 0h1C * 256**2 + 0h33 * 256**1 + 0hD8 * 256**0 =; 1*16777216 + 28 * 65536 + 51 * 256 + 216 * 1 = ; 18625496 18625496 миллисекунд = 05:10:25.496 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 00:31 |
|
||
|
Подскажите формат DateTime (в файле DBF)
|
|||
|---|---|---|---|
|
#18+
luzzeerrЕще бы знать адрес в файле где ты это добро видишь Это соверешенно неважно. Где-то в данных, начиная со смещения, лежащего в байтах 8-9 с начала файла. Про порядок байт я в курсе, но за напоминание спасибо :) А в универах уже давно ничему хорошему не учат. Проблема была именно в интерпертации данных. Нигде не нашел ничего стоящего, даже на сайте мелкомягких. ВладимирМПервые 4 байта - количество дней по Юлианскому исчислению Огромный респект! Проблемы это полностью не решило (т.к. я пишу на С++, где ф-ии, аналогичной SYS, к сожалению, нет). Но конвертацию я-таки сделал. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 12:10 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=239&tid=1590951]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 383ms |

| 0 / 0 |
