Я знаю, что это старый пост, но я просто скажу...
Ответ, данный Джейсоном Коэном, является хорошим приближением к обращению.
Однако есть проблема, связанная с количеством секунд в одном дне. День не длится ровно 86400 секунд, и время от времени к дням добавляются секунды, чтобы синхронизировать время с различными наблюдаемыми стандартами. Они называются високосными секундами (https://en.wikipedia.org/wiki/Leap_second). Високосные секунды добавляются к UTC, чтобы удерживать его в пределах 1 секунды от UT1.
Само собой разумеется, что по мере того, как с 1 января 1970 года проходит все больше и больше времени, простое преобразование, описанное выше, будет накапливать все больше и больше ошибок из «фактического наблюдаемого времени». В период с 1972 по 2013 год было добавлено 25 дополнительных секунд.
Частью красоты и простоты чисел по юлианскому календарю является то, что они вообще не представляют строки дат. Это просто подсчет времени, прошедшего с начала юлианской эпохи, подобно тому, как время POSIX представляет собой непрерывный отсчет миллисекунд с начала эпохи POSIX. Таким образом, единственная проблема возникает, когда вы пытаетесь сопоставить число юлианского дня с локализованной строкой даты.
Если вам нужна строка даты с точностью до минуты (в 2013 году), вам понадобится алгоритм, учитывающий високосные секунды.
08.06.2013