【问题标题】:Format from normal numbers to time in [hh]:mm format以 [hh]:mm 格式从普通数字格式化为时间
【发布时间】:2012-10-30 20:55:06
【问题描述】:

我通常在 Excel 中使用简单的单元格自定义格式 [HH]:mm 将普通数字格式转换为小时和分钟格式的好方法,结果如下:

现在我似乎无法在 Visual Basic 2010 或 sql 2000 中找到类似的方法,所以任何人都知道这样做的方法。 提前致谢。

注意: [ HH ]:mm 中的括号是为了使小时数在每 24 小时圈后不四舍五入为 0。

【问题讨论】:

标签: vb.net tsql sql-server-2000 excel-2007


【解决方案1】:

试试这个:

Public Function FormatHoursAndMinutes(totalMinutes As Integer) As String
    Dim span As TimeSpan = TimeSpan.FromMinutes(totalMinutes)
    Return String.Format("{0:00}:{1:00}", CInt(Math.Floor(span.TotalHours)), span.Minutes)
End Function

【讨论】:

  • 是的,谢谢我试过了,但它不能正常工作你知道当我写我的时间是 1.5 小时我需要的是这个结果 1:30 而你的函数给了我另一个结果,我很感激非常感谢直接给出答案的方式。
  • 糟糕。忘记把它四舍五入了。我通过添加Math.Floor 来修复它。
  • 非常感谢,虽然当值超过 24 小时时它不起作用,但它只是四舍五入回零,即 24.5 小时 = 00:30 使用您的函数。
  • 当我将 1470 传递给该方法时,它会为我返回“24.5”。也许你打错了什么?我怀疑你有span.Hours 而不是span.TotalHours
【解决方案2】:

听起来你想要一个TimeSpan 并使用FromMinutes 方法构造它。

然后,您可以使用 .ToString() 或其重载之一格式化 TimeSpan 以进行显示。

【讨论】:

  • 看起来没有任何标准或自定义格式字符串支持该格式。因此,如果不传入您自己的格式化对象,ToString 方法将无法正常工作。
【解决方案3】:

如果您想显示超过 24 小时。每次您想将 Interger 转换为 hh:mm 时,是否真的需要创建一个 TimeSpan 对象?

Public Function MinutesTohhmm(ByVal mins As Integer) As String

    Dim hrs As Integer = mins \ 60
    Dim mnts As Integer = mins Mod 60

    Dim hhmmStr As String = IIF(hrs < 10, "0", "") & hrs & ":" & IIF(mnts < 10, "0", "") & mnts

    Return hhmmStr 

End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 2013-12-10
    相关资源
    最近更新 更多