2013-02-25 65 views
-1

即时通讯编写一个函数,使用Visual Studio 2010将时间转换为最近的半小时。 例如,15:23至15:30然后如果15:05,它将转换为15:00 。转换时间戳到半小时

任何人有想法吗?提前致谢。

+0

什么数据类型是你目前持有时间戳? – 2013-02-25 08:14:03

回答

2

您可以使用此方法:

Public Enum eRoundingDirection 
    up 
    down 
    nearest 
End Enum 

Public Shared Function RoundDateTime(dt As DateTime, minutes As Integer, direction As eRoundingDirection) As DateTime 
    Dim t As TimeSpan 
    Select Case direction 
     Case eRoundingDirection.up 
      t = (dt.Subtract(DateTime.MinValue)).Add(New TimeSpan(0, minutes, 0)) 
     Case eRoundingDirection.down 
      t = (dt.Subtract(DateTime.MinValue)) 
     Case Else 
      t = (dt.Subtract(DateTime.MinValue)).Add(New TimeSpan(0, minutes \ 2, 0)) 
    End Select 

    Return DateTime.MinValue.Add(New TimeSpan(0, (CInt(t.TotalMinutes) \ minutes) * minutes, 0)) 
End Function 

当前时间四舍五入到最接近的半小时:

Dim rounded = RoundDateTime(Date.Now, 30, eRoundingDirection.nearest): 

最初发现(在C#)here