у меня есть 3 текстовых поля для дня, месяца и года. Из этого нужно рассчитать дату - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть 3 текстовых поля для дня, месяца и года. Из этого нужно рассчитать дату. И также требуется функция вычитания (Расчет на текущую дату)

Например: текущая дата = 20-02-2020, день -1 и месяц - 1 и год = 1, а затем результат = 21-03- 2021

Ответы [ 4 ]

2 голосов
/ 20 февраля 2020

Ну, вам нужно Parse Text из TextBox es и Add этих значений до DateTime.Today

if (int.TryParse(DayTextBox.Text, out int day) &&
    int.TryParse(MonthTextBox.Text, out int months) &&
    int.TryParse(YearTextBox.Text, out int years)) {
  DateTime result = DateTime.Today
    .AddDays(days)
    .AddMonths(months)
    .AddYears(years);

  //TODO: put relevant code here
}
else {
  //  Some of the text boxes has invalid value 
}

Обратите внимание, что заказ (.AddDays затем .AddMonths или .AddMonths, затем .AddDays) имеет значение :

30 Jan 2020 + 1 Day + 1 Month == 29 Feb 2020
30 Jan 2020 + 1 Month + 1 Day ==  1 Mar 2020
0 голосов
/ 20 февраля 2020

Спасибо всем за ваше время .. Я решил свой вопрос и поделился для вашей справки

        int value_days = 0;
        int.TryParse(txtRecommendationfor_OPReview_Days.Text, out value_days);
        int value_months = 0;
        int.TryParse(txtRecommendationfor_OPReview_Months.Text, out value_months);
        int value_years = 0;
        int.TryParse(txtRecommendationfor_OPReview_Years.Text, out value_years);
        if ((value_days <= 0 || Convert.ToString(value_days) == "") && (value_months <= 0 || Convert.ToString(value_months) == "") && (value_years <= 0 || Convert.ToString(value_years) == ""))
        {
            dtpRecommendationfor_OP.Value = DateTime.Now;
            return;
        }
        else
        {
            int OPReview_Days = Convert.ToInt32(txtRecommendationfor_OPReview_Days.Text.Trim() == "" ? 0.ToString() : txtRecommendationfor_OPReview_Days.Text.Trim());
            int OPReview_Months = Convert.ToInt32(txtRecommendationfor_OPReview_Months.Text.Trim() == "" ? 0.ToString() : txtRecommendationfor_OPReview_Months.Text.Trim());
            int OPReview_years = Convert.ToInt32(txtRecommendationfor_OPReview_Years.Text.Trim() == "" ? 0.ToString() : txtRecommendationfor_OPReview_Years.Text.Trim());

            var _date = DateTime.Now.AddDays(OPReview_Days).AddMonths(OPReview_Months).AddYears(OPReview_years);
            dtpRecommendationfor_OP.Value = _date;
        }
0 голосов
/ 20 февраля 2020

Вам нужно только вычесть или добавить тоже? Каков формат ваших текстовых полей?

Есть несколько способов сделать это, в зависимости от вашего ввода. Один пример:

var yourDate = DateTime.Now.AddDays(TextBox1).AddMonths(TextBox2).AddYears(TextBox3);

Или вы можете вычесть два DateTimes друг из друга.

0 голосов
/ 20 февраля 2020

Используя AddDays и AddMonths.

DateTime now = DateTime.Now;
DateTime yesterday = now.AddDays( -1 );
DateTime aMonthBefore = now.AddMonths( -1 );

Согласно msdn , AddMonths будет обрабатывать високосный год. Если вы просто хотите вычесть 30 дней, используйте вычитание.

DateTime thirtyDaysBefore = now.Subtract( new TimeSpan( 30, 0, 0 ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...