Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2014, 16:41   #1
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию Вычисления времени.

Уважаемые форумчане!

Подскажите пожалуйста процедуру вычисления времени.
У меня на форме два maskedTextBox с заданным форматом - DateTime (23:20) и один TextBox.
В одном (BLOCK_OUT_maskedTextBox) задаю начальное время, в другом (BLOCK_IN_maskedTextBox) конечное.
Теперь в текстбоксе (BLOCK_TIME_textBox) нужно вывести разницу, т.е. время между началом и концом и в формате часы и минуты.

Все что смог. Но получается ерунда.
Код:
 DateTime dt1 = DateTime.Parse(Convert.ToDateTime(BLOCK_IN_maskedTextBox.Text).ToString("hh:mm"));
            DateTime dt2 = DateTime.Parse(Convert.ToDateTime(BLOCK_OUT_maskedTextBox.Text).ToString("hh:mm"));
            TimeSpan ts = dt2.Subtract(dt1);
            int Minutes = ts.Minutes;
            int Hours = ts.Hours;
            DateTime total = new DateTime(2014,05,15, Hours, Minutes, 0);
            BLOCK_TIME_textBox.Text = total.ToShortTimeString();
Думаю что есть более простой вариант, но к сожалению сам не в силах. Да и по гуглу не так много инфы на этот счет.
ac1-caesar вне форума Ответить с цитированием
Старый 17.05.2014, 17:46   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

возмите DateTimePicker и не занимайтесь ерундой
потом DateTimePicker1.Value - DateTimePicker2.Value
получите разницу
eval вне форума Ответить с цитированием
Старый 17.05.2014, 18:04   #3
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Очень извиняюсь, я совсем новичок и нет опыта работы. Вроде все понятно что говорите, но написать у меня не получилось. Не могли бы вы это в коде написать? И еще одна загвоздка, посчитает правильно если допустим 13:24 - 15:35, а вот к примеру как быть если будет 23:56 - 01:25?
ac1-caesar вне форума Ответить с цитированием
Старый 17.05.2014, 18:10   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

я ж уже написал, что еще может не получаться?
eval вне форума Ответить с цитированием
Старый 17.05.2014, 20:00   #5
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Сильно не ругайтесь, я к тому что если начало в 23:56, а конец в 01:25 то разница должна быть 01:29. А в Вашем варианте 01:25 - 23:56 = минусовое значение.
ac1-caesar вне форума Ответить с цитированием
Старый 17.05.2014, 20:06   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас время1 и время2 могут быть в разных сутках?
Тогда обязательно наличие даты. допустим, если начало в 23:56 15 мая, а окончание в 01:25 18 мая, то разница будет не 01:29, а 49:29

причём дата должна быть с годом! (событие началось в 23 часа 31 декабря, а закончилось в январе).

DateTimePicker это всё поддерживает и учитывает!

p.s. если у Вас начало и завершение события ВСЕГДА в пределах 24 часов, тогда можете банально прибавить 24 к вашему отрицательному результату, получите то, что Вам нужно!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2014, 20:27   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

да, как уже сказали, если 1 время больше 2-го, это однозначно разные сутки, ну а далее уже повторять не буду...
eval вне форума Ответить с цитированием
Старый 17.05.2014, 21:05   #8
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. если у Вас начало и завершение события ВСЕГДА в пределах 24 часов, тогда можете банально прибавить 24 к вашему отрицательному результату, получите то, что Вам нужно!
У меня как раз этот случай.
ac1-caesar вне форума Ответить с цитированием
Старый 18.05.2014, 17:11   #9
ac1-caesar
Форумчанин
 
Регистрация: 26.07.2013
Сообщений: 134
По умолчанию

Подсказали вот такой код

Код:
try
            {
                DateTime dt1, dt2;
                if(!DateTime.TryParse(BLOCK_OUT_maskedTextBox.Text,out dt1)||
                    !DateTime.TryParse(BLOCK_IN_maskedTextBox.Text, out dt2))
                    throw new ArgumentException("Неверный формат даты");
 
                dt3 = dt2.AddHours(24);
                BLOCK_TIME_textBox.Text = (dt1 > dt2 ? dt3 - dt1 : dt2 - dt1).ToString();

            }
            catch (ArgumentException ex)
            {
                MessageBox.Show(ex.Message);
            }
Отлично работает. (Может кому пригодится)
ac1-caesar вне форума Ответить с цитированием
Старый 18.05.2014, 17:33   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Может кому пригодится
это врятли, за это и уволить могут
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод времени и выходного дня вместо времени Mikesh PHP 2 31.01.2014 00:22
Написать программу вычисления площади многоугольника используя формулу для вычисления площади треугольника в качестве подпрограммы сердце Паскаль, Turbo Pascal, PascalABC.NET 0 24.12.2012 18:21
WinAPI синхронизация времени с сайтом точного времени. Walker32 Помощь студентам 4 07.06.2012 18:59
Вычисления AcidBurst Помощь студентам 14 22.09.2010 15:09
вычисления Александр8585 Microsoft Office Excel 8 16.09.2008 15:22