powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как прочитать DateTime значение из VFP файла?
5 сообщений из 5, страница 1 из 1
Как прочитать DateTime значение из VFP файла?
    #35810223
serg_kunz2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Может кто-нибудь в курсе как хранятся DateTime значения в Visual FoxPro файле?
Понятно что это 8 байт, но как их декодировать в год, месяц, и т.п. - не могу нигде найти инфы...

Например,
дата 01.22.2009 00:00:08 хранится следующим образом:
0x46 0x75 0x25 0x00 0x40 0x1F 0x00 0x00

Как отсюда проэкстрактить дату и время - не понятно...
...
Рейтинг: 0 / 0
Как прочитать DateTime значение из VFP файла?
    #35810232
serg_kunz2,

работающим с фоксом это все нафик не нужно, у них и так все нормально показывается. Вам то зачем понадобилось? Почему средствами фокса не возпользоваться?
...
Рейтинг: 0 / 0
Как прочитать DateTime значение из VFP файла?
    #35811093
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формат хранения типа DateTime

FoxPro

8 байт

Первые 4 байта - количество дней по Юлианскому исчислению (функция SYS(11, DateTime()))
Следующие 4 байта - количество миллисекунд с полуночи с точностью до 333 миллисекунд

Юлианский период это промежуток времени в 7980 лет, исползуемый в астрономических и хронологических расчетах. Начала юлианского периода - 1 января 4713год до н.э.

Данные следует читать "справа-налево". Т.е. в 4 байтах записано 4-х значное число по основанию 256, где младшие разряды расположены слева (в начале числа)

Значение: 0x46 0x75 0x25 0x00 0x40 0x1F 0x00 0x00

Дата

это первые 4 разряда: 0x46 0x75 0x25 0x00 или в 10-ричной системе 70 117 37 00

70*256^0 + 117*256^1 + 37*256^2 + 00*256^3 = 2454854

Количество дней с начала юлианского периода до 01.01.2009 можно определить так

SYS(11,{^2009-01-01}) = 2454833 дней

Значит, записанное значение на (2454854 - 2454833) = 21 дней больше

Если прибавить к 01.01.2009 21 день получим 22.01.2009

Время

это последние 4 разряда: 0x40 0x1F 0x00 0x00 или в 10-ричной системе 64 31 00 00

64*256^0 + 31*256^1 + 0*256^2 + 0*256^3 = 8000

8000 миллисекунд = 8 секунд, прошедших с полуночи

====================
Итого: 22.01.2009 00:00:08
...
Рейтинг: 0 / 0
Как прочитать DateTime значение из VFP файла?
    #35811796
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serg_kunz2Всем привет.

Может кто-нибудь в курсе как хранятся DateTime значения в Visual FoxPro файле?
Понятно что это 8 байт, но как их декодировать в год, месяц, и т.п. - не могу нигде найти инфы...

Например,
дата 01.22.2009 00:00:08 хранится следующим образом:
0x46 0x75 0x25 0x00 0x40 0x1F 0x00 0x00

Как отсюда проэкстрактить дату и время - не понятно...

Ну а без "экстракций" ежели - просто взять TTOC(DATETIME()), а полученную строку элементарно разложить на год, месяц...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как прочитать DateTime значение из VFP файла?
    #37735944
Escuro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМФормат хранения типа DateTime
FoxPro
8 байт
Первые 4 байта - ...
...
====================
Итого: 22.01.2009 00:00:08
Пишу читалку файлов dbf (FoxPro) на MatLab, очень нужна была именно эта инфа.
Спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как прочитать DateTime значение из VFP файла?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]