Member 12349103 Ответов: 2

Как исключить обеденное время из смен


У меня есть Winform, который делит время доставки поровну в течение дня. У меня есть 6 текстовых полей, в которые я ввожу обеденное время в течение 3 смен. Мне нужно, чтобы он исключал время начала и остановки на обед и забирал после, так что время все еще ровное. должен ли я подходить к нему по-другому, как к csv-файлу?

Что я уже пробовал:

Я искал в интернете, но мне не повезло, как это сделать.

2 Ответов

Рейтинг:
11

Member 12349103

            var start_time = dateTimePicker1.Text;
            var start_time_array = start_time.Split(':');
            var today = DateTime.Now;
            var trailer_count = Convert.ToInt32(tbTrailer_Needed.Text);
            var minutes_apart = Convert.ToDouble(tbTime_Between.Text);
            var calculated_start_time = new DateTime(today.Year, today.Month, today.Day, Convert.ToInt16(start_time_array[0]), Convert.ToInt16(start_time_array[1]), 00);


var trailers = new List<trailer__time>();
            for (var i = 0; i < trailer_count; i++)
            {
                if (i == 0)
                {
                    calculated_start_time = calculated_start_time.AddMinutes(0);
                }
                else
                {
                    calculated_start_time = calculated_start_time.AddMinutes(minutes_apart);
                }

                trailers.Add(new Trailer__Time
                {
                    Trailer_Number = i,
                    Delivery_Time = calculated_start_time.ToString()
                });
            }

            dataGridView1.DataSource = trailers;
                    
        }


Richard MacCutchan

Не использовать double типы для ваших значений, поскольку они по своей сути неточны для такого рода проблем. Вы должны использовать все DateTime типы и использование TimeSpan делать расчеты и сравнения.

Member 12349103

Ни на кого другого я не могу найти ответа.

спасибо

Member 12349103

Где я могу найти пример, чтобы сделать это в текстовом поле?

Philippe Mori

Иди в школу и слушай своего учителя... или почитать какие-нибудь книжки.

Member 12349103

я принял решение немного запоздало с твоим снарком

Рейтинг:
1

Patrice T

Цитата:
должен ли я подходить к нему по-другому, как к csv-файлу?
Здесь нет разных подходов, это математическая задача, вам нужно только получить данные любым способом, каким вы хотите. Csv-файл не будет проще текстового поля, единственная причина выбрать тот или иной us, если время обеда изменится или нет.

Рабочее время - от смены. начало до обеда. начало и от обеда. конец до смены. конец. Здесь не должно быть никаких трудностей.

Объясните свою проблему чем-то непонятным для вас.

[Обновление]
Цитата:
не видел прямого решения для вычитания времени
Первое решение: вы используете переменные DateTime, которые будут обрабатывать детали для вас.
Второе решение: вы делаете это сами. Цифры слева от": "- это часы, цифры справа-минуты. Преобразуйте в минуты (1 час= 60 минут) a, d, затем вычитайте.


Member 12349103

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

Philippe Mori

DateTime и TimeSpan имеют все необходимые функции и операторы для базового вычисления времени. Если бы вы прочитали документацию, это очень помогло бы вам.

Patrice T

Так верно.