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

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

28.05.2012, 10:17. Показов 6537. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru