2013-02-25 105 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