Есть ли польза от использования юлианских дат в коде? - PullRequest
4 голосов
/ 18 февраля 2010

Я поддерживаю приложение PHP / Flash, которое использует юлианские даты в коде и преобразует только григорианские для отображения. Прежде чем я заменил целочисленные юлианские даты типом данных Date, мне было интересно, есть ли польза от использования юлианских значений? Должно ли это быть даже изменено?

Одной из проблем является возможность быстрого просмотра дат в базе данных. Я добавил штамп даты и времени в одну из таблиц, чтобы исправить это, но теперь мы переходим на новую БД и имеем возможность вносить улучшения, поэтому отойти от юлианской даты, кажется, нужно. Так почему бы мне не захотеть сделать это? Первоначального разработчика больше нет здесь.

Ответы [ 4 ]

5 голосов
/ 18 февраля 2010

Для управления датой / временем вы хотите, чтобы все ваши моменты использовали простую, монотонную, линейную шкалу.Человеческие календари, часовые пояса, летнее время делают их более сложными и лучше всего их хранить в слое дисплея.

Обычная шкала - это кодирование моментов в виде количества секунд (или миллисекунд) с определенного источника,В Java вы будете использовать миллисекунды с 1 января 1970 года в 00:00:00 UTC (также известное как «эпоха»);вы также игнорируете дополнительные секунды, поэтому преобразования в любую дату и время в любом календаре являются чисто алгоритмическими.Эта шкала - это то, что возвращает System.currentTimeMillis().В мире Unix вы можете использовать число секунд с начала эпохи, поскольку именно это ядро ​​Unix склонно возвращать (через системный вызов time()).

Такиелинейные шкалы позволяют легко сравнивать даты и вычислять временные интервалы, в то время как все, что основано на календаре, делает такие вычисления более сложными.

Так что мой совет - отойти от юлианских дат, но определенно не конвертировать их в григорианские даты.Наоборот, на самом деле.

2 голосов
/ 18 февраля 2010

Юлианские даты, я знаю, это php-ориентированный вопрос, он больше подходит для больших биллинговых систем, работающих на мэйнфреймах, особенно в COBOL, просто для того, чтобы упростить расчет дней от начала биллинга до конец биллинга. Это единственное, что я могу вспомнить, где используются юлианские даты, особенно в унаследованных кодах COBOL ... Я не уверен на 100% в том, что используется сейчас, я мог бы представить правильные отформатированные даты (ошибка 2000 года была несуществующей, был невероятно раскручен!) ...

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 18 февраля 2010

Не вижу причин не использовать класс Date. Вы можете легко переключаться между unixtime (хотя flash использует миллисекунды вместо секунд) очень легко, используя это, поэтому я бы порекомендовал использовать его для обмена данными.

И еще один гоча; Если вы решите использовать обычное время unixtime, вы не сможете использовать типы данных int / uint во Flash, поскольку они будут переполнены, вам придется использовать Number.

0 голосов
/ 18 февраля 2010

числовые даты, такие как юлианские даты или эпоха Unix, намного проще для вычислений ... время в n часов или разницу во времени между двумя произвольными датами можно вычислить чрезвычайно легко ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...