计数器和日期问题

时间:2014-03-26 04:22:04

标签: vb.net

我正在讨论一个类似日期的问题,但是如果我使用像这样的日期它工作正常“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   

1 个答案:

答案 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