Павел Зарецкий | Репутация: 108(Кандидат)
25 сентября 2009 в 21:46
Сначала нужно выяснить формат этих дат. Например в Delphi есть такой формат TDateTime. В нем даты хранятся в вещественном виде и обозначают, сколько времени прошло с определенной даты. При чем целая часть показывает число полных дней, а вещественная - количество часов, минут и секунд. Чтобы прибавить к такой дате день(24 часа), нужно прибавить 1, пол дня (12 часов) - прибавить 1/2, 1 час - 1/24, 1 минуту - 1/1440. А в сложении абсолютных дат нету никакого толку, гораздо полезнее вычитать такие даты.
Антон М | Репутация: 120(Кандидат)
26 сентября 2009 в 15:02
Тысячи программистов уже задавались этим вопросом, поэтому следует учесть 2 вещи:
- прежде чем написать что-то стоит поискать готовую реализацию
- общие положения о дате можно найти тут: http://www.opennet.ru/man.shtml?topic=time&category=7&russian=2
Очевидная математическая модель времени - число секунд, прошедших от начала эпохи (складывать и вычитать целые числа просто). Если точность до секунд не требуется, можно использовать число дней или лет.
Таким образом для выполнения операции "2009-09-26 + 1 день" нужно:
* преобразовать операнды (символьные даты) в целые числа
* сложить операнды по правилам сложения целых чисел
* преобразовать результат сложения в дату
Алгоритм трансляции числа дней от начала эпохи в год, месяц, день и обратно был предложен в 1582 папой Григорием XIII http://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B8%D0%B3%D0%BE%D1%80%D0%B8%...
Сергей Чуприна | Репутация: 123(Кандидат)
28 сентября 2009 в 00:00
(если я правильно понял вопрос) В оффисных приложениях Microsoft дата представляет десятичную дробь. При этом целая часть - число дней прошедших с 31.12.1899 (т.е. 1 - 01.01.1900, 2 - 02.01.1900 и т.д.), дробная часть - соответствующая часть суток (например 0,25 - 6 часов утра, 0,5 - полдень). А сложение дат производится просто как сложение дробей с последующим переводом в формат даты. Получили 156,36 - отсчитываем 156 дней от 31.12.1899 (4.6.1900) 0,36 - часть суток из расчета 1=24 часа (т.е. 8 час 38 мин 24 сек)
Сначала нужно выяснить формат этих дат. Например в Delphi есть такой формат TDateTime. В нем даты хранятся в вещественном виде и обозначают, сколько времени прошло с определенной даты. При чем целая часть показывает число полных дней, а вещественная - количество часов, минут и секунд. Чтобы прибавить к такой дате день(24 часа), нужно прибавить 1, пол дня (12 часов) - прибавить 1/2, 1 час - 1/24, 1 минуту - 1/1440. А в сложении абсолютных дат нету никакого толку, гораздо полезнее вычитать такие даты.