R: chron - преобразовать юлианские дни в грегорианскую дату

Я работаю с набором данных временных рядов, который указывается в юлианских днях с момента происхождения (1-1-1). Я использую функцию chron из пакета chron для преобразования юлианских дней в грегорианскую дату. Однако, чтобы проверить свой результат, помимо тестирования моих результатов в RI я также решил сравнить его с несколькими веб-сайтами (например, http://www.timeanddate.com/date/durationresult.html), который считает количество дней между двумя датами. Ниже приведен воспроизводимый код:

library('chron')
date <- seq(from=729391,to=729756,by=30)
d.year <- 1
d.month <- 1
d.day <- 1
new.date <- chron(date,origin. = c(d.year,d.month,d.day), out.format = 'year-d-m')

Когда я запускаю следующий код, я должен получить 0 для всех элементов, если преобразование было выполнено правильно. На самом деле я получаю 0:

> library('lubridate')
> ymd(as.character(new.date)) - ymd('0001-01-01') - date
Time differences in days
 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0

Когда я сравниваю это с веб-сайтами, я получаю разные результаты. Например, для элемента new.date[1] (то есть 1998-Jan-03) я использую указанный выше веб-сайт, чтобы подсчитать количество дней между 0001-01-01 и 1998-Jan-03, и я получаю 729,393, тогда как я должен получать 729,391. Я знаю, что веб-сайт включает дату начала в расчет, хотя разница все еще составляет 1. Спасибо, если бы вы могли пролить свет на это.


person Alan Alves    schedule 26.06.2015    source источник


Ответы (1)


Инструмент календаря Gnu EMACS дает 729 392 включительно, что эквивалентно разнице в 792 391; он использует григорианский календарь при вычислении дней в интервале. В нем также говорится, что 1 января 1 года нашей эры по григорианскому календарю совпадает с фактическим днем ​​3 января 1 года нашей эры по юлианскому календарю. Таким образом, если какой-либо другой веб-сайт считал даты до 1582 года юлианскими датами, он будет вести отсчет с 1 января 1 по юлианскому календарю (30 декабря 1 года до н. на два дня больше, чем если бы оба конца интервала считались григорианскими.

Кстати, оригинальный календарь Gnu EMACS был создан Эдвардом Рейнгольдом; он и Нахум Дершовиц написали Календарные вычисления, опубликованные издательством Cambridge University Press.

person Gerard Ashton    schedule 26.06.2015
comment
Что-то вроде версии Excel (Windows) начала прошлого века? - person IRTFM; 27.06.2015
comment
Проблема Excel (Windows) якобы заключалась в попытке обеспечить совместимость с Lotus 123, что было совершенно неверно. Выбор некоторых веб-сайтов для использования юлианского до 4 октября 1582 г. включительно и использования григорианского языка с 15 октября 1582 г. является осознанным выбором; это то, что действительно было сделано в местах, которые приняли григорианский календарь в день, когда Папа попросил их. - person Gerard Ashton; 27.06.2015