我正在讨论一个类似日期的问题,但是如果我使用像这样的日期它工作正常“MAR 28,2014 3PM”由于某种原因我在使用1AM时得到“-17:49” ..这是为什么?
Dim myTime As String = "MAR 26, 2014 1AM"
Dim date1 As DateTime = System.DateTime.Now.ToString("hh:mm:ss dddd, dd MMMM yyyy")
Dim date2 As DateTime = Convert.ToDateTime(myTime)
Dim ts As New TimeSpan
ts = date2 - date1
If ts.Days > 0 Then
TextBox.Text = ts.Days & ":" & ts.Hours & ":" & ts.Minutes & ":" & ts.Seconds
ElseIf ts.Hours > 0 Then
TextBox.Text = ts.Hours & ":" & ts.Minutes & ":" & ts.Seconds
Else
TextBox.Text = ts.Minutes & ":" & ts.Seconds
If ts.Minutes = 2 And ts.Seconds < 30 Then
doStop = True 'we are 2:30 minutes away from closing
End If
If ts.Minutes < 15 Then
'TextBox.text = "Ending Soon"
End If
End If
答案 0 :(得分:3)
您正在将当前日期/时间转换为字符串,然后立即将其自动转换回第二行的日期值。
Dim date1 As DateTime = System.DateTime.Now.ToString("hh:mm:ss dddd, dd MMMM yyyy")
^^^^^^^^ this converts date to string
^^^^^^^^ this converts it back due to implicit casting
但是由于您使用hh
作为格式,因此您只获得日期的12小时值,因此有关日期值的一些信息将丢失。
例如,它目前是美国东部时间上午12:34,我正在测试代码,但是如果我在第二行之后立即转出date1
的内容,那么它已经在12小时之后!
3/26/2014 12:34:41 PM
如果您想使用日期值并对其进行数学运算,请将它们保留为日期值。不要转换为字符串,直到您准备向用户显示内容为止。所以只需使用:
Dim date1 as DateTime = System.DateTime.Now