|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2009, 16:38 | #1 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
обработка даты
собственно проблемка примерно такая
(с++ консоль) нужно прибавить к данной дате Х дней, притом так что бы получилась правильное число правильного месяца например дано 25.10.09 прибавляем 7 дней и получаем 01.11.09 + еще нужна возможность сравнить текущую дату с другой, включая понятия больше/меньше скурил описание time.h , но как я понял там только форматирование для вывода и все это в строках или символах короче говоря как сравнивать даты, как увеличить значение, в чем хранить? хотелось бы простой пример, ну или хотя бы ссылки где почитать про это дело |
22.10.2009, 16:51 | #3 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
Хранить для даты я бы советовал 3 значения - год, месяц и день. Завести дополнительный массив на длины месяцев (вписать заранее). В самом простом варианте все делается через циклический инкреминг: увеличиваем определенное число раз день, когда текущий день больше размера данного месяца - увеличиваем месяц, день становится 1ым. Когда закончился 12ый месяц - увеличиваем год. Отдельно прописать для высокосных годов лишний день, а так никаких трудностей.
|
22.10.2009, 17:02 | #4 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
хмм вроде ясно..
А эти 3 значения год/месяц/день получать из секунд которые возвращает обычный time(NULL); или попроще есть варианты? |
22.10.2009, 17:29 | #5 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
"К данной дате" - я думал, что дата уже указана на входе, иначе было бы, к примеру, "текущей дате". Если речь идет о системном времени или каком-нибудь подобном случае - тогда уже отдельным заданием становится обработка этого времени (с помощью того же time(NULL); - уходим от алгоритма, о котором спрашивалось в условии). Если же надо обрабатывать не данные системы, а запрос пользователя (пример
"10 10 2010 300"), то главное - уточнить заранее, что будет на входе. Ведь я в примере дал 3 числа готовыми, а если у нас не числа, а строки - придется использовать дополнительный алгоритм перевода. В 2 совах - если даны месяц год день - отлично, ничего не надо придумывать, а иначе надо сначала уточнить, что дано - и потом перводить, так как надо это переводить. Если Вам еще интересно, то даже простой алго, который я указал вначале, можно заметно "оптимизировать" таким способом - если с началом нового года остаток дней "к увеличению" больше 366 - увеличиваем год на 1 и уменьшаем остаток дней на число дней в "прошедшем" году (высокосный/обычный). Единственное неудобство в том, что при таком решении в реализации придется отказатся от фора, и делать через while. |
22.10.2009, 17:40 | #6 |
Форумчанин
Регистрация: 25.09.2009
Сообщений: 525
|
ну у меня по плану будет и "данная дата" и реальное системное время которые между собой взаимодействуют
т.е если к некой дате прибавляется Х дней, то с учетом реального календаря получается новая дата потом по мере надобности она должна сравниваться с текущей системной датой пока вроде разобрался что делать, осталось объяснить компилятору это )) например получил реальную дату как 3 разных числа так: Код:
Последний раз редактировалось m0nax; 22.10.2009 в 17:45. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
выбор даты | Screame | Microsoft Office Excel | 9 | 23.10.2009 19:30 |
Даты | Sparky | БД в Delphi | 6 | 02.10.2009 09:48 |
Преобразование даты | Tavrida | Microsoft Office Excel | 6 | 31.03.2009 15:41 |
Даты не даты | Nasya | Microsoft Office Excel | 3 | 22.08.2007 20:18 |