Как получить целевую дату с заданной c датой после преобразования указанной c даты из CET в IST и без учета выходных - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь получить дату и время в будущем на основе даты Specifi c, введенной пользователем. Мне нужно преобразовать из CET в IST, а затем добавить несколько часов в зависимости от некоторых условий, и он должен дать нам будущую дату, исключая выходные и определенное время, например, если это время больше 17:00, тогда он должен указать следующий доступный день.

У меня есть форма MVC, где она принимает дату, а затем мне нужно преобразовать эту дату в дату в будущем в коде C#.

Кто-нибудь может мне в этом помочь.

Я могу указать лог c в псевдокоде, если необходимо.

Пожалуйста, помогите мне в этом. Поскольку я не могу понять, как это сделать.

Ответы [ 2 ]

1 голос
/ 26 мая 2020

В простом приложении WinForms с dateTimePicker и кнопкой для запуска события:

private void button4_Click(object sender, EventArgs e)
{
    DateTime d = dateTimePicker1.Value;
    d = d.AddHours(3.5); // add 3.5 hours to move from CET to IST
    switch(d.DayOfWeek)
    {
        case DayOfWeek.Saturday:
            d = d.AddDays(2); // increment day to Monday
            break;
        case DayOfWeek.Sunday:
            d = d.AddDays(1); // increment day to Monday
            break;
    }
    MessageBox.Show(d.ToString("R")); // show value of d in machines regional format
}

Надеюсь, это подскажет вам несколько идей!

0 голосов
/ 29 мая 2020

Спасибо за вашу помощь. Я использовал ваш код, а затем использовал свой собственный logi c и придумал окончательное решение, которое дает мне целевую дату, как и ожидалось.

Ниже мой код: -

DateTime d = Convert.ToDateTime (model.RecardedDate);

                DateTime end_time = new DateTime(1901,01,01, 17, 0 ,0);

                TimeSpan timeFrom = TimeSpan.Parse(d.ToString("HH:mm"));
                TimeSpan timeTo = TimeSpan.Parse(end_time.ToString("HH:mm"));
                TimeSpan timediff = timeTo.Subtract(timeFrom);

                if (model.Complexity == "L")
                {
                    if (timediff.TotalHours >= 4)
                    {
                        d = d.AddHours(4);
                    }
                    else if (timediff.TotalHours < 4 && timediff.TotalHours > 0)
                    {
                        d = d.AddHours(timediff.TotalHours + 15 + (4 - timediff.TotalHours));
                    }
                    else if (timediff.TotalHours < 0)
                    {
                        d = d.AddHours(timediff.TotalHours + 15 + 4);
                    }
                }
                else if (model.Complexity == "M")
                {
                    if (timediff.TotalHours >= 9)
                    {
                        d = d.AddHours(9);
                    }
                    else if (timediff.TotalHours < 9 && timediff.TotalHours > 0)
                    {
                        d = d.AddHours(timediff.TotalHours + 15 + (9 - timediff.TotalHours));
                    }
                    else if (timediff.TotalHours < 0)
                    {
                        d = d.AddHours(timediff.TotalHours + 15 + 9);
                    }
                }
                else if (model.Complexity == "H")
                {
                    var day = d.ToString("ddd");
                    if (day == "Mon")
                    {
                        d = d.AddHours(120);
                    }
                    else if (day == "Tue" || day == "Wed" || day == "Thu")
                    {
                        d = d.AddHours(120 + 48);
                    }
                    else if (day == "Fri" && timediff.TotalHours > 0)
                    {
                        d = d.AddHours(120 + 48);
                    }
                    else if (day == "Fri" && timediff.TotalHours < 0)
                    {
                        d = d.AddHours(timediff.TotalHours + 15 + 48 + 120);
                    }
                }
                switch (d.DayOfWeek)
                {
                    case DayOfWeek.Saturday:
                        d = d.AddDays(2);// increment day to Monday
                        break;

                    case DayOfWeek.Sunday:
                        d = d.AddDays(1); // increment day to Monday
                        break;
                }
                d = d.AddHours(3.5);
                model.TargetDate = d; // show value of d 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...