Неточное преобразование десятичного числа в часы

Ребята, посмотрите на этот код, я не могу найти, что не так. Я пытаюсь преобразовать десятичное значение в часы и минуты, но оно кажется неточным.

        Dim selReleased As New SqlDataAdapter("SELECT SUM(TotalHours) AS ProcessingTime FROM TimeConsumed WHERE ClientID ='" & ClientAccountStatusViewer.txtClientID.Text & "'", jonsqlcon)
        Dim setReleased As New DataSet
        selReleased.Fill(setReleased)
        Dim txtPtime As String
        Dim ProcessingTime As Decimal

        txtPtime = setReleased.Tables(0).DefaultView.Item(0).Item("ProcessingTime")
        ProcessingTime = Math.Round(Convert.ToDecimal(txtPtime), 2)

        Dim pTime As String = String.Format("{0}:{1}", CInt(ProcessingTime), (ProcessingTime Mod 1) * 60)

        MessageBox.Show("Time Consumed: " & pTime, "RELEASED", MessageBoxButtons.OK, MessageBoxIcon.Information)

когда код выполняется, он суммирует TotalHours всех записей в базе данных как ProcessingTime, после чего он выполнит формулу, которую я использовал, которая String.Format("{0}:{1}", CInt(ProcessingTime), (ProcessingTime Mod 1) * 60) но похоже в точности.

Сумма TotalHours составляет: 0,63, то есть больше 30 минут.

Но если вы посмотрите на Таблицу от TimeStart первой записи до TimeStopped последней записи, она не совпадает с TotalHours, равным 0,63 и примерно 18-19 минут. Любая помощь будет высоко ценится. Заранее спасибо!

Для справки, пожалуйста, посмотрите на эту таблицу:

ClientID        TimeStart               TimeStopped             Officer          StageProcess       TotalHours      Status
UO.1802.0002    2/13/2018 1:52:16 PM    2/13/2018 1:53:18 PM    Jeff Olive       Check List         .01747  
UO.1802.0002    2/13/2018 1:53:18 PM    2/13/2018 1:53:23 PM    Jeff Olive       Application        .00153  
UO.1802.0002    2/13/2018 1:53:23 PM    2/13/2018 1:53:40 PM    Jeff Olive       Occular            .00482  
UO.1802.0002    2/13/2018 1:53:40 PM    2/13/2018 1:59:24 PM    jon ra           Remarks Step2PQ    .09558          For Verification
UO.1802.0002    2/13/2018 1:59:24 PM    2/13/2018 2:00:14 PM    Jeff Olive       Occular            .1143   
UO.1802.0002    2/13/2018 2:00:14 PM    2/13/2018 2:01:08 PM    jon ra           Remarks Step2PQ    .12455  
UO.1802.0002    2/13/2018 2:01:08 PM    2/13/2018 2:02:11 PM    Jayson Tadeo     CIR                .0176   
UO.1802.0002    2/13/2018 2:02:11 PM    2/13/2018 2:02:32 PM    Jayson Tadeo     AR                 .00596  
UO.1802.0002    2/13/2018 2:02:32 PM    2/13/2018 2:03:20 PM    jon ra           Remarks Step4PV    .01351          For Verification
UO.1802.0002    2/13/2018 2:03:20 PM    2/13/2018 2:04:19 PM    Jayson Tadeo     CIR                .01651  
UO.1802.0002    2/13/2018 2:04:19 PM    2/13/2018 2:04:27 PM    Jayson Tadeo     AR                 .00233  
UO.1802.0002    2/13/2018 2:04:27 PM    2/13/2018 2:05:09 PM    jon ra           Remarks Step4PV    .04373  
UO.1802.0002    2/13/2018 2:05:09 PM    2/13/2018 2:06:27 PM    Jeff Olive       CRAM               .02182  
UO.1802.0002    2/13/2018 2:06:27 PM    2/13/2018 2:07:34 PM    jon ra           Remarks Step6CA    .01873          For Verification
UO.1802.0002    2/13/2018 2:07:34 PM    2/13/2018 2:08:26 PM    Jeff Olive       CRAM               .05493  
UO.1802.0002    2/13/2018 2:08:26 PM    2/13/2018 2:09:43 PM    jon ra           Remarks Step6CA    .05465  
UO.1802.0002    2/13/2018 2:09:43 PM    2/13/2018 2:11:13 PM    Jeff Olive       LoanDoc            .02505  

1 ответ

Зачем изобретать велосипед?

При работе со временем лучше использовать TimeSpan учебный класс.

    ProcessingTime = Math.Round(Convert.ToDecimal(txtPtime), 2)

    Dim ts As TimeSpan = TimeSpan.FromHours(ProcessingTime)

    Dim pTime As String = ts.TotalDays.ToString("f0") & " day(s) " &
                    ts.Hours.ToString.PadLeft(2, "0"c) & ":" &
                    ts.Minutes.ToString.PadLeft(2, "0"c) & ":" &
                    ts.Seconds.ToString.PadLeft(2, "0"c)

pTime = "0 day(s) 00:37:48", так просто. Но вы можете сделать это так, как хотите.

Другие вопросы по тегам