【问题标题】:Count hours passed over midnight数小时过去了午夜
【发布时间】:2016-07-19 17:53:48
【问题描述】:

所以,让自己投入到这个我认为会在公园里散步的事情中,直到我发现处理需要在午夜过去的几个小时之间计算的事情是多么困难。

简而言之,我正在编写一个工作应用程序,我的愿景是在操作员轮班期间可视化生产。这样做,我需要声明轮班时间(我在上一个问题中得到了很好的帮助),但我还需要计算自当前轮班开始以来经过了多少小时。这是为了计算效率(基于 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

我在编码方面或多或少是新鲜的,我仍处于尽我所能学习和理解每个功能的阶段,而不仅仅是使用复制粘贴。 不过,这让我很头疼,甚至谷歌似乎都不愿意帮助我。

感谢您对此问题的任何帮助或提示。

我正在考虑一种简单的方法来解决它,例如使用 00:00-06:00 作为工作时间,然后在该时间跨度内只做 +1 以经过几个小时,但看起来很俗气..

【问题讨论】:

    标签: count timespan


    【解决方案1】:

    这行得通:

        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
    

    但这感觉像是在作弊.. ;)

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多