.
Поскольку эмулятор привода HClock должен позволять задать любой год в диапазоне -32767..+32767 - встал вопрос, в каком внутреннем формате лучше хранить дату.
Для 64-разрядного счётчика миллисекунд ( или микросекунд ) логично выбрать в качестве нулевой точки момент начала эры CE : 01.01.01 00:00:00.
E-time concept
E-time - это количество E-интервалов времени ( секунд для E0 time, миллисекунд для E3 time, микросекунд для E6 time или наносекунд для E9 time ), прошедших с момента 01.01.01 00:00:00.
Для CE-дат - это положительное число, для BCE-дат - отрицательное число.
Unix time - количество интервалов E0 с момента 01.01.1970 00:00:00
Windows FILE time - количество интервалов E7 с момента 01.01.1601 00:00:00
Код:
E0_Time( "01.01.0001 00:00:00" ) == 0
E0_Time( "01.01.0001 00:00:01" ) == 1
E3_Time( "01.01.0001 00:00:01" ) == 1000
E6_Time( "01.01.0001 00:00:01" ) == 1000000
E9_Time( "01.01.0001 00:00:01" ) == 1000000000
E0_Time( "31.12.-001 23:59:59" ) == -1
E3_Time( "31.12.-001 23:59:59" ) == -1000
E6_Time( "31.12.-001 23:59:59" ) == -1000000
E9_Time( "31.12.-001 23:59:59" ) == -1000000000
E0_Time( "01.01.1601 00:00:00" ) == 50491123200
E0_Time( "01.01.1970 00:00:00" ) == 62167132800
- - - Добавлено - - -
Установить соответствие между номером дня, значениями E0, E3 и E6 и календарной датой для любого момента времени можно при помощи консольной утилиты Windows: E-time.exe