По какому календарю считаются дни с 28 декабря 1800 года? - PullRequest
4 голосов
/ 09 апреля 2010

Мне было поручено прочитать некоторые данные из какой-то странной старой системы.
Система содержит много дат, но все они странно отформатированы. Это целые числа в диапазоне приблизительно от 55,000 до 80,000.

Я точно знаю две даты:

58,112 equals February 5, 1960  (originally written as Feb 2,1960 [*])
61,439 equals March 16, 1969

[*] This typo explains some of the comments initially challenging the
    leap-year awareness of the calendar.

Мне кажется, что эти целые числа - это количество дней, прошедших с 28 декабря 1800 года. Но я думаю, что это очень странная дата, чтобы начать календарь. Вероятно, что-то происходит с високосными годами, и что-то, что позже вызовет проблемы.

Кто-нибудь узнает этот календарь? Может кто-нибудь сказать мне, как правильно преобразовать эти целые числа в удобочитаемые даты?

Ответы [ 5 ]

6 голосов
/ 16 декабря 2010

Это может быть Кларион. Я работаю с аналогичным преобразованием старой базы данных в SQL, и он выяснил, что файлы (* .dat) были

4 голосов
/ 11 августа 2012

Я работаю с системой, представляющей григорианские даты в юлианском календаре. Если вы хотите конвертировать юлианскую дату в григорианскую, вам нужно только добавить количество дней до 28 декабря 1800 года.

В SQL Server:

SELECT DATEADD(day, 58112, '18001228')

по примеру. Извините, я не говорю по-английски. Базовая дата в вашей системе - 28 декабря 1800 года.

3 голосов
/ 09 апреля 2010

звучит для меня как система на заказ, но довольно странно:)

один из способов преобразования, который всегда будет работать, - это использовать какую-то функцию date_add () - вы не указываете, какой язык вы используете, но в большинстве современных языков должен быть способ добавить несколько дней к дате.

в отношении високосных годов, если эти две даты верны, у вас не должно быть проблем, определенно был как минимум 1 високосный год между 1960 и 1969 годами :) определенно стоит проверить несколько более поздних дат, чтобы убедиться, что .

2 голосов
/ 24 октября 2016

Да, это файлы данных Clarion. использование Edit1.Text: = datetostr (закодировано (1800,12,28));

2 голосов
/ 09 апреля 2010

Это не так странно. Например, дата на Javacards рассчитывается по аналогичной схеме, начиная с 1986-02-04: http://forums.sun.com/thread.jspa?threadID=5421557&messageID=10894720#10894720

...