2016-07-19 5 views
0

Итак, я попал в эту вещь, которую, как я думал, будет прогулкой в ​​парке, пока не узнаю, как сложно работать с вещами, которые нужно рассчитать между часами, которые проходят полночь.Количество часов, переходящих в полночь

Вкратце, я пишу приложение для работы, в котором мое зрение должно визуализировать производство для операторов во время их смены. Для этого мне нужно объявить время сдвига (с которым я получил отличную помощь в предыдущем вопросе), но мне также нужно рассчитать, сколько часов прошло с момента начала текущего переключения. Это необходимо для расчета эффективности (на основе maxproducts (hourspassed * maxcapacity/h)/productsmade * 100). Расчет времени работает безупречно, пока не начнется ночная смена. Их часы 23: 00-06: 00, и я просто не могу получить точные часы, когда он будет перекрываться в полночь.

Текущий код, используемый для расчета этого:

Dim startTime As DateTime = Label46.Text ' Shift start Time 

    Dim endTime As DateTime = DateTime.Now.ToString("HH:mm:ss") ' Current time 

    Dim span As TimeSpan = endTime.Subtract(startTime) 

    Dim span2 As Double = (span.Hours) 
    Label35.Text = span2 ' displays hours passed since shiftstart 

Я свежий при кодировании более или менее, я все еще в той стадии, когда я стараюсь, чтобы узнать и понять каждую функцию, а не просто используя копию. У меня есть голова, хотя даже Google не хочет мне помочь.

Благодарим за ЛЮБОЕ мнение или намеки на эту проблему.

Im мышление простого способа получить через него, например, с использованием 00: 00-06: 00, как и рабочие часов, то просто сделать + 1, чтобы прошли часы в течение этого промежутка времени, но кажется сырным ..

ответ

0

Это работает:

If DateTime.Now > DateTime.Now.ToShortDateString & " 00:00:01" And DateTime.Now < DateTime.Now.ToShortDateString & " 05:59:59" Then 
     Dim startTimeN As DateTime = "00:00:01" ' Shift start Time 

     Dim endTimeN As DateTime = DateTime.Now.ToString("HH:mm:ss") ' Current time 

     Dim span1 As TimeSpan = endTimeN.Subtract(startTimeN) 

     Dim span3 As Double = (span1.Hours) 

     Label35.Text = span3 + 1 
    Else 

     Dim startTime As DateTime = Label6.Text.ToString() ' Shift start Time 

     Dim endTime As DateTime = DateTime.Now.ToString("HH:mm:ss") ' Current time 

     Dim span As TimeSpan = endTime.Subtract(startTime) 

     Dim span2 As Double = (span.Hours) 
     Label35.Text = span2 
    End If 

Но это чувствует, как обман ..;)

Смежные вопросы