我正在VB.NET中为一个轮班运行的制造单位开发应用程序。在每个班次结束时,应用程序应发出警报,指示班次已结束。
在应用程序中,用户键入班次时间为小时&在“保存”按钮上单击文本框并保存在数据库中。
如图所示,第一班在下午3点30分结束,第二班在晚上11点30分结束。 &安培;第三班在上午07:30。当应用程序加载时,小时&每个班次的分钟都存储在变量中。
我的查询是,如何将这些变量的值转换为时间格式(HH:mm),以便我可以将换档时间与系统时间进行比较,并在换档每天结束时发出警报而不管日期。下面是我到目前为止尝试过的代码..
Private Sub TmrMonitor_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TmrMonitor.Tick
Dim Tim As String = TxtHH.Text & ":" & TxtMM.Text
LblShift.Text = (DateTime.ParseExact(Tim, "hh:mm", CultureInfo.InvariantCulture)) = DateTime.Now()
TmrMonitor.Stop()
ReadReg() ' Read data from PLC
If FormActive = True Then
TmrMonitor.Start()
End If
CommStat() ' PLC communication status
End Sub
提前致谢。
PRASHANT。
答案 0 :(得分:3)
更改
LblShift.Text = (DateTime.ParseExact(Tim, "hh:mm", CultureInfo.InvariantCulture)) = DateTime.Now()
要
Dim Tim As String = TxtHH.Text & ":" & TxtMM.Text
LblShift.Text = (DateTime.ParseExact(Tim, "HH:mm", CultureInfo.InvariantCulture))
Dim shiftTime = TimeSpan.Parse(Tim)
Dim systemtime = TimeSpan.Parse(Now.ToString("HH:mm"))
If (shiftTime.Equals(systemtime) = False) Then
MessageBox.Show("times don't match")
End If
答案 1 :(得分:1)
问题是,在使用DateTime.ParseExact
时,它会以MM/dd/yyyy hh:mm:ss tt
格式返回日期。但在您的情况下,您只需要HH:mm
格式,因此请使用以下代码进行比较,它将起作用。请注意,这只是一种简单的方法,因为您已经指定了您不关心日期。
LblShift.Text = Tim = Format(DateTime.Now, "HH:mm")
希望它有所帮助。