С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Добавить к текущей дате один месяц

28.05.2012, 10:17. Показов 6544. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добро!
Так я вывожу в Edit дату с добавлением одного месяца:
C++
1
 Edit2->Text=(FormatDateTime("mm.yyyy.", Now()+ 31));
здесь все предельно ясно +31 это добавление 31го дня к текущей дате.
Теперь вопрос:
мне нужно добавить именно месяц а он может быть как 31 день так и 28 дней и 30 и 29... Другими словами в Edit2 мне нужно выводить дату равную Now + один месяц в формате "mm.yyyy."!?
заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2012, 10:17
Ответы с готовыми решениями:

К текущей дате time() прибавить календарный месяц
как к текущей дате time() прибавить календарный месяц

Как от текущей даты отнять один месяц?
Подскажите пожалуйста, как от текущей даты отнять один месяц.

Прибавить один день к текущей дате
Почему не работает?Пишет: Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, column 23. day. ...

12
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
28.05.2012, 10:52
Я применяю decode-encode чтоб без фокусов__
C++
1
2
3
4
5
    unsigned short de,me,go ;
    TDateTime tm = Now();
    DecodeDate(tm,go,me,de);
    tm = EncodeDate(go,(me+1)%12,de); 
    Edit1->Text=(FormatDateTime("dd.mm.yyyy.", tm));
2
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
28.05.2012, 12:05  [ТС]
Данкешон nick42 это для ввода даты начала начисления средств, в белинговой базе данных, поэтому и попросил грамотный способ!


Добавлено через 1 час 5 минут
Еще один вопрос по датам...
как правильно сравнивать формат введенной даты?


C++
1
2
3
4
5
6
Date D;
Date S;
D = правильный формат даты для проверки "dd.mm.yyyy"
Edit2->Text (переводим в дату и записываем в переменную S);
if (S FormatDate == D FormatDate) // Если формат даты введен правильно
  ShowMessage ("Формат даты введен правильно!");
Как это осуществить?
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.05.2012, 12:06
Samrisbe, может это
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
28.05.2012, 12:12  [ТС]
Цитата Сообщение от EdarGp Посмотреть сообщение
Здесь есть способы о которых я думал
первый переводить дату в строку DateTimeToString затем сравнить разделители и так далее...
второй вариант задавать DateSeparator нужный мне...
Но мне этого мало мне надо чтоб еще полностью формат проверять на соответствие нужному!
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 12:57
Samrisbe, а обязательно так как Вы написали?

Я просто думаю, что может переменную S сделать стрингом обычным и потом юзать функцию StrToDate и отлавливать ошибку
Любые ошибки в строке с датой вызовут исключение EConvertError.
Ну либо в try-catch поместить.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
28.05.2012, 13:04  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Samrisbe, а обязательно так как Вы написали?

Я просто думаю, что может переменную S сделать стрингом обычным и потом юзать функцию StrToDate и отлавливать ошибку

Ну либо в try-catch поместить.
Нет мне не принципяльно как, главное чтоб я мог задать в коде формат для сравнения и считать с Edita введенную дату для сравнения!
Думал у кого из коллег по цеху, готовый способ решения такой задачи есть, уж базу данных подозреваю многие писали...
Я пороюсь сегодня в Справочнике по Builderu, поищу метод проверки правильности введенного формата даты, если конечно он существует...
0
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.05.2012, 13:05
Samrisbe, а зачем сравнивать формат даты?
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
28.05.2012, 13:14  [ТС]
Цитата Сообщение от EdarGp Посмотреть сообщение
Samrisbe, а зачем сравнивать формат даты?
EdarGp ты реально почемучка ... Чтоб особо одаренные пользователи правильно ввели дату которая будет сохранена и использовалась в дальнейших расчетах ...

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

Добавлено через 2 минуты
Цитата Сообщение от EdarGp Посмотреть сообщение
За ссыль Спс!
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 13:17
Samrisbe, бр-р-р...

Еще раз, у Вас требуемый формат - статичный или динамичный?

Если статичный то так:

C++
1
2
3
4
5
try {
     StrToDate(Edit1->Text); // то, что ввел юзер
} catch (...) {
ShowMessage("Неверный формат");
}
Преобразование происходит в соответствии с форматом, заданным на данный момент в настройках системы. У меня сейчас это "dd.mm.yyyy".
1
Почемучка)
 Аватар для Ddv122
1244 / 304 / 30
Регистрация: 23.12.2010
Сообщений: 2,001
Записей в блоге: 1
28.05.2012, 13:18
Цитата Сообщение от Samrisbe Посмотреть сообщение
кажется не гламурным...

Не по теме:


К LK тебе нужно насчёт гламура :)


А если как вариант сделать Формат даты 24.05.2012
Если человек вводит цифры без формата то через 2 символа ставится точка и ещё через 2 точка, если в условии есть запятая или // заменять на точку)
если год введен в формате не полном не 2012 а просто 12 добавлять перед годом 20) и будет 2012
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
28.05.2012, 13:24  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Еще раз, у Вас требуемый формат - статичный или динамичный?
Статичный. "dd.mm.yyyy"

Цитата Сообщение от The_Immortal Посмотреть сообщение
try {
StrToDate(Edit1->Text); // то, что ввел юзер
} catch (...) {
ShowMessage("Неверный формат");
}
Если не влом полностью чирканите код плиз, ато я над ним так надругаюсь и ночью опять буду плохо спать...

Добавлено через 3 минуты
Цитата Сообщение от EdarGp Посмотреть сообщение

Не по теме:


К LK тебе нужно насчёт гламура :)


А если как вариант сделать Формат даты 24.05.2012
Если человек вводит цифры без формата то через 2 символа ставится точка и ещё через 2 точка, если в условии есть запятая или // заменять на точку)
если год введен в формате не полном не 2012 а просто 12 добавлять перед годом 20) и будет 2012
Еле врубился
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
28.05.2012, 13:38
Samrisbe, так я и написал весь Вот могу на кнопочку повесить

Edit1 - тот едит, куда юзер вписывает дату. Соответственно если он впихнет туда "12.13.2012" - то ему выдасццо "Неверный формат". Ну и все, что не соответствует формату - аналогичное сообщение.

C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    try {
        StrToDate(Edit10->Text);
    }
    catch (...) {
        ShowMessage("Неверный формат");
    }
}
}
Добавлено через 13 минут
Ну а вот так вот можно предварительно задавать формат:

C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm2::Button3Click(TObject *Sender) {
    DateSeparator = '-';
    ShortDateFormat = "dd-mm-yyyy";
 
    try {
        StrToDate(Edit10->Text);
    }
    catch (...) {
        ShowMessage("Неверный формат");
    }
}
Вроде...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2012, 13:38
Помогаю со студенческими работами здесь

Добавить 7 дней к текущей дате
надо Выведите на экран дату, которая будет через неделю после текущей. вот я сделал , но добавляется не к дням, а к месяцам var...

Добавить к дате месяц(ы) и год(ы)
Всем привет, подскажите, как сделать чтобы при заполнении Даты согласования, месяца (допустим 6 мес) и года (допустим 10 лет) при нажатии...

Добавить заданное количество дней к текущей дате
Здравствуйте! Мне нужно сделать програмку которая будет брать текущую дату выводить ее в Label, потом добавить к этой дате 10 дней и...

Как добавить один час к дате?
есть рабочий код для переименования скриншотов: set FOLDER=d:\screens\ if exist %temp%\files.lst del %temp%\files.lst FOR %%A in...

Определить возраст пользователя по дате рождения и текущей дате
Составить программу, которая запрашивает у пользователя год его рождения и текущий год и выводит возраст пользователя. Пример работы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru