1

在一个结合了 Jquery Mobile 和 ASP 4 的网站上工作。目前我被困在一个我试图做 SQL 插入的表单上。我正在尝试使用 VB 中的代码来处理我的插入...

所有这一切:我需要我的页面将分钟值转换为小时和刻钟格式,四舍五入到最接近的刻钟。

目前,我在文本框中输入了两次(例如上午 8:00:00 和上午 9:12:00)。如果我使用 TimeSpan,我可以计算两个值之间的差异并将该差异转储到一个变量中,例如 tElapsed = tSpan.TotalMinutes.ToString 将在上述时间设置 tElapsed = 72。我需要将其转换为 1.0 小时、1.25 小时、1.5 小时等格式,并在 3 分钟以上到下半小时……我一直卡住。

概要:

有:

Text Box: Time1 = 8:00:00 AM
Text Box: Time2 = 9:12:00 AM
Dim tDiff As String = DateTime.Parse.(Time2.Text) - DateTime.Parse(Time1.Text)
Dim tElapse As String = tDiff.TotalMinutes.ToString

对于上述情况,tElapse 将返回 72,现在我需要将 72(分钟)转换为 1.25(小时)。

1.25 小时可以是任何一个:64 分钟 - 78 分钟

任何帮助,将不胜感激...

4

2 回答 2

2

您可以使用 Math.DivRem

int remainder;
int whole = Math.DivRem(tDiff.TotalMinutes, 60, out remainder);

在这一点上,剩余部分现在将是几个小时之间剩下的部分。0 到 59 分钟。我不清楚你想如何精确地四舍五入,但是 (double)remainder / 60.00 会给你小数位,然后你可以把它加到整体上。

于 2012-05-22T16:35:17.267 回答
0

这是我使用的解决方案,将其作为答案发布,以便显示代码结构:

    Dim tDiff As TimeSpan = DateTime.Parse(textboxEnd.Text) - DateTime.Parse(textboxStart.Text)
    Dim mins As Integer = tDiff.TotalMinutes.ToString
    Dim remainder As Integer
    Dim hrs As String = Math.DivRem(mins, 60, remainder)
    Dim qtyorder As String
    Select Case remainder
        Case 1 To 2
            qtyorder = hrs
        Case 3 To 18
            qtyorder = hrs & ".25"
        Case 19 To 28
            qtyorder = hrs & ".50"
        Case 29 To 48
            qtyorder = hrs & ".75"
        Case Else
            qtyorder = (hrs + 1) & ".00"
    End Select

    lblResult.Text = qtyorder
于 2012-05-23T14:53:37.333 回答