Вопрос

У меня есть реализация пролога, которая позволяет мне сравнивать точки времени в событиях, используя представление на основе проловых отношений 13 отношений Аллена. Каждое событие имеет начальную точку (YYYY-MM-DD) и конечную точку (yyyy-mm-dd), и я могу проверить, одновременно произошли только два события, или одна - до другой, и т. Д. 1555-12-03 до 1555-12-04). Это работает хорошо с так называемыми датами переменного тока (Anno Domini), но теперь у меня есть хорошее количество событий, которые произошли BC (до Христа). Какой лучший способ обрабатывать эти события BC и иметь возможность сказать, например, что основание Афин (BC 1556) до рождения колума (1451) ..... Любая идея более чем приветствуется.

Спасибо,

Я.

Это было полезно?

Решение

Как вы храните свою дату? Если это в вашей собственной структуре, то включите рекламу или до нашей эры и используйте это как своего рода негативный флаг, до н.э., лечащиеся в возрасте отрицательных лет, лечащиеся на годы.

Другие советы

Я считаю, что он спрашивает, хранятся ли ваши даты в различных предикатах или если они указаны только в одном предикате даты, например, a_date (12345, "12-24-2011"), где первое поле - это поле ID. То есть вы храните даты как что-то вроде

a_date (event_id, date_value)

Где формат Date_Value является yyyy-mm-dd?

Одно решение: требуют «AD» или «BC» в строке даты, причем «до нашей эры» по умолчанию «BC» и лечение отсутствия как «AD».

Другое решение: создать новую предикат даты, позвоните

a_date (date_id, date_value, флаг)

где флаг либо BC или AD. Если флаг объявлен объявление, математика продолжается как обычно. Если флаг является до нашей эры, ветвь в новый код, который делает соответствующую математику. Существующие предикаты даты формы a_date (event_id, date_value) будут интерпретировать как a_date (event_id, date_value, "ad")

То есть в коде

a_date (event_id, date_value): = a_date (event_id, date_value, "ad")

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top