2012-11-10 76 views
1

我通常有这样的好方法在Excel中使用简单细胞的自定义格式[HH]正常数字格式转换到小时和分钟格式:毫米果然出这样的:格式的时间[HH]:mm格式

excel sheet

现在,我似乎无法找到一个类似的在Visual Basic 2010或SQL 2000中要做到这一点所以没有任何一个的方式做到这一点知道的。 在此先感谢。

注:的括号[ HH ]:毫米是保持小时图从每24小时一圈后四舍五入为0。

+0

你知道吗? http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx –

+0

“正常数字”是什么意思?我不知道这意味着什么。 – Oded

+0

<>虚构? ;-) – pnuts

回答

0

试试这个:

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 
+0

是的,谢谢我试过但它不能正常工作你知道我写的时间是1.5小时我需要的是这个结果1:30当你的函数给了我另一个结果时,我欣赏直接的方式虽然非常感谢,但给出了答案。 –

+0

糟糕。忘了把它放下来。我通过添加'Math.Floor'来修复它。 –

+0

非常感谢你,虽然24小时内它不工作,但它只是回到零,即24.5小时= 00:30使用你的功能。 –

1

这听起来像你想有一个TimeSpan并使用FromMinutes方法来构建它。

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

+0

它看起来不像任何标准或自定义格式字符串都支持该格式。所以,在传递自己的格式化对象之后,ToString方法将无法正常工作。 –

0

如果您想要显示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