Vb.net 与柜台和日期一起发出

Vb.net 与柜台和日期一起发出,vb.net,Vb.net,我对下面凌晨1点这样的日期有点不满,但如果我使用这样的日期,由于某种原因,“2014年3月28日下午3点”效果很好,我在使用凌晨1点的时候会得到“-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.ToD

我对下面凌晨1点这样的日期有点不满,但如果我使用这样的日期,由于某种原因,“2014年3月28日下午3点”效果很好,我在使用凌晨1点的时候会得到“-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   
Dim myTime As String=“2014年3月26日凌晨1点”
Dim date1 As DateTime=System.DateTime.Now.ToString(“hh:mm:ss dddddd,dd-MMMM-yyyy”)
Dim date2 As DateTime=Convert.ToDateTime(myTime)
将ts变暗为新的时间跨度
ts=日期2-日期1
如果ts.天>0,则
Text.Text=ts.Days&“:”&ts.Hours&“:”&ts.Minutes&“:”&ts.Seconds
如果其他时间>0,则
Text.Text=ts.Hours&“:”&ts.Minutes&“:”&ts.Seconds
其他的
Text.Text=ts.Minutes&“:”&ts.Seconds
如果ts.分钟=2,ts.秒<30,则
doStop=True“离收盘还有2:30分钟
如果结束
如果ts.分钟<15分钟,则
'TextBox.text=“即将结束”
如果结束
如果结束

您正在将当前日期/时间转换为字符串,然后在第二行上立即将其自动转换回日期值

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

将选项Strict On添加到代码顶部或在项目的属性中设置它。然后修复显示的错误。