2017-08-30 113 views
3

我正在爲VB.NET中的應用程序工作,這些應用程序是在班次中運行的。在每次輪班結束時,應用程序應發出警報,指出輪班已結束。將字符串從兩個文本框轉換爲hh:mm vb.NET

在應用程序中,用戶鍵入轉換時間的小時數&分鐘文本框並保存在保存按鈕單擊數據庫中。

enter image description here

如該圖所示,第一移位在下午11時30在下午3時三十結束,第二&上午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。

+1

只是要清楚。你是否想要將小時和分鐘附加在一起,以便它們形成HH:mm格式。因此,文本框「15」和「30」中的值顯示爲「15:30」? –

+0

是的,但是當我追加這些值時,我無法比較系統日期和班次時間。 – 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 
+0

簡單偉大..工程就像一個魅力。謝謝@無人.. – Prashant

+1

樂於幫忙。請記住,雖然只使用'Time'使用'TimeSpan'而不是'DateTime' –

1

的問題是使用DateTime.ParseExact,當它在格式MM/dd/yyyy hh:mm:ss tt返回日期。但在你的情況下,你只需要HH:mm格式,所以使用下面的一段代碼進行比較,它會工作。請注意,這只是一個簡單的方法,因爲您已經指定您不關心日期。

LblShift.Text = Tim = Format(DateTime.Now, "HH:mm") 

希望它有幫助。

+0

'ParseExact'返回'DateTime',它沒有格式!_ –

相關問題