Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
#1

Как вычислить разницу между датами

14.11.2014, 15:41. Просмотров 1324. Ответов 15
Метки нет (Все метки)

Господа подскажите в программе нужно узнать разницу времени между началом заезда автомобиля и его завершения . для примера время начала и время завершения хранятся в переменных в виде t1= 12:14:23 и t2= 12:14:53 как теперь получить разницу между ними?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2014, 15:41
Ответы с готовыми решениями:

Как вычислить разницу в годах между двумя датами?
Задачка школьного уровня но напрочь забыл(. Осложняется еще и тем, что...

Вычислить количество дней между датами
Нужно вычислить количество дней между датами. Есть стандартные функции?

Определить разницу между заданной датой/временем
Всем доброго дня, Имеется задача определить количество часов между двумя...

Пояснить разницу между рекурсией и итерацией на примере
Всем привет, можете объяснить разницу между рекурсией и итерацией. С помощью...

Получение интервала между двумя датами в DGV
Уважаемые форумчане. не могу решить одну проблему. Проблема в том что сравнить...

15
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
14.11.2014, 15:48  [ТС] #2
Вот несколько примеров из интернета но они не работают как надо
0
Вложения
Тип файла: rar WindowsApplication1.rar (65.2 Кб, 4 просмотров)
Visualist
51 / 51 / 25
Регистрация: 01.02.2014
Сообщений: 201
14.11.2014, 17:45 #3
Функция DateDiff
vb.net
1
2
3
4
5
6
7
' The following statements set datTim1 to a Thursday
' and datTim2 to the following Tuesday.
Dim datTim1 As Date = #1/4/2001#
Dim datTim2 As Date = #1/9/2001#
' Assume Sunday is specified as first day of the week.
Dim wD As Long = DateDiff(DateInterval.Weekday, datTim1, datTim2)
Dim wY As Long = DateDiff(DateInterval.WeekOfYear, datTim1, datTim2)
0
edward_freedom
1553 / 1432 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
14.11.2014, 17:53 #4
В нашем faq, есть ответы на все вопросы!
2
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
15.11.2014, 13:53  [ТС] #5
Посмотрел все но не получается указывать Dim datTim1 As Date = #1/4/2001# и Dim datTim2 As Date = #1/9/2001# с помощью переменных постоянно ошибки. Может найдутся люди которые покажут пример чтобы в модуле хранились две даты в формате 13:34:12 и 13:36:16 а нажатием кнопки на форме отображалась разница между ними?
0
Visualist
51 / 51 / 25
Регистрация: 01.02.2014
Сообщений: 201
15.11.2014, 13:59 #6
Лучший ответ Сообщение было отмечено MACHOMAN как решение

Решение

Цитата Сообщение от MACHOMAN Посмотреть сообщение
разница между ними?
vb.net
1
2
3
4
Dim a = CDate("13:34:12")
Dim b = CDate("13:36:16")
Dim c = DateDiff(DateInterval.Second, a, b)
MsgBox(c)
Добавлено через 2 минуты
так найдем, сколько секунд между временем а и временем б.
вопрос только в том, как вы получаете эти 2 даты.
1
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
15.11.2014, 17:17  [ТС] #7
У меня два автомобиля начинают заезд на 402 метра в одно и тоже время а приезжают на финиш в разное мне нужно пощетать время каждого автомобиля от старта до финиша и по полученным данным сравнить кто из них победил с статистикой заезда

Добавлено через 14 минут
Ваш способ работает но выдает ответ в виде числа 124 . Можно ли сделать ответ в виде 00:02:04 ?
0
Visualist
51 / 51 / 25
Регистрация: 01.02.2014
Сообщений: 201
15.11.2014, 18:05 #8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

vb.net
1
2
3
4
5
        Dim a = CDate("13:34:12")
        Dim b = CDate("13:36:16")
        Dim c = CStr(DateDiff(DateInterval.Second, a, b))
        c = TimeSerial(0, 0, c)
        MsgBox(c)
2
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
15.11.2014, 20:05  [ТС] #9
Спасибо большое это как раз то что я искал!!

Добавлено через 33 минуты
без ошибки не обошлось: Приведение строки "" к типу "Date" является недопустимым. можно ли это исправить? t88 = t.ToLongTimeString
0
Миниатюры
Как вычислить разницу между датами  
Visualist
51 / 51 / 25
Регистрация: 01.02.2014
Сообщений: 201
15.11.2014, 20:27 #10
Цитата Сообщение от MACHOMAN Посмотреть сообщение
t88
а чему равно t88 в момент возникновения ошибки? не пустой ли строке?
0
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
15.11.2014, 23:01  [ТС] #11
t88 = t.ToLongTimeString и t66= t.ToLongTimeString запоминают время в разное время при нажатии кнопок f и m они символизируют время финиша левого автомобиля и правого после происходит их сравнивание и при этом ошибка. понять не могу как исправить! файлы из Resources перед запуском исходника закинуть в папку Resources
0
Миниатюры
Как вычислить разницу между датами  
Вложения
Тип файла: rar Resources.rar (4.01 Мб, 1 просмотров)
Тип файла: rar Новая папка (6).rar (3.89 Мб, 13 просмотров)
Visualist
51 / 51 / 25
Регистрация: 01.02.2014
Сообщений: 201
16.11.2014, 17:55 #12
Не могу добраться до ошибки. То ли у меня так открыло (открылось с конвертированием проекта), то ли прога кривая, но не доходит до этой ошибки. Или я не понимаю, что там делать.
Нажимаю "На старт", считает до 300, пишет "Победителей в заезде нет".

Добавлено через 18 часов 8 минут
Нашел твою ошибку. Вычисление переменной t88 идет в условии:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
            If GetAsyncKeyState(Keys.F) Then
                W_R = "on"
                If W_R = "on" = True Then
                    Dim t88 = t.ToLongTimeString
 
                    L_p.Enabled = False
                    Label18.Visible = False : PictureBox8.Visible = True : PictureBox9.Visible = True : PictureBox7.Visible = True
                    Label19.Visible = False : Label22.Visible = False : Label21.Visible = False : Label20.Visible = False
                    Label23.Visible = False : Label25.Visible = False
                    Label24.Visible = False : If Tick97 < Tick98 Then PictureBox8.BackgroundImage = Global.WindowsApplication1.My.Resources.Resources._2_место : L_p.Enabled = False : W_q = "0" : T_L = "1" Else PictureBox8.BackgroundImage = Global.WindowsApplication1.My.Resources.Resources.win : L_p.Enabled = False : W_q = "0" : T_L = "1"
                End If
            End If
Получается, что используется переменная до того, как вычисляется. В итоге у нас в переменной t88 - пустая строка.
0
MACHOMAN
51 / 27 / 4
Регистрация: 15.01.2014
Сообщений: 347
17.11.2014, 21:11  [ТС] #13
да я понимаю но как сделать по другому выполнение поиска ризниц времени не пойму)
выбор победителя кнопками f и m или на оборот tab статистика
0
Yury Komar
Модератор
Эксперт .NET
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
18.11.2014, 15:43 #14
Объяви переменные до процедуры, или в Form_Load, но не DIM, а PUBLIC


Так как в VB.NET переменная уничтожается автоматически после завершения процедуры, тоесть после End Sub

Это в VB6 переменная жила пока программу не закроешь.
0
Fragus
34 / 34 / 9
Регистрация: 16.09.2014
Сообщений: 133
18.11.2014, 16:16 #15
Можно и без публика обойтись просто написав ее выше процедуры.
Или в самой процедуры с помощью метода Static. Как я знаю его значение не уничтожается
0
Yury Komar
Модератор
Эксперт .NET
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
22.11.2014, 22:29 #16
Fragus, за Static спасиб... учту
0
22.11.2014, 22:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 22:29

Сравнить два списка из Excel и вывести разницу между ними
Есть два списка, грузятся в DatagridView1 с первой книги Excel и в...

Определить количество полных недель и понедельников между заданными датами
Заданы две даты. Определить количество полных недель и понедельников между...

Определить количество дней четвертого числа между двумя датами
Перед мной стоит задача определить сколько к примеру 4-тых чисел между датой N1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru