2010-12-08 169 views
12

我正在尋找與VB.NET中的Java System.currentTimeMilli()等價的東西。在VB.Net中,你如何獲得以毫秒(long)爲單位的當前時間?

什麼是要調用的方法?我知道Datetime.Now,但不是關於實際轉換爲長毫秒。


我的更多具體細節需要:

我需要管理登錄到期。所以很有可能當我登錄時,我會設置一個「expiration_time_milli」,等於當前時間+超時值。然後,如果我想檢查我的登錄是否有效,我將檢查「expiration_time_milli」是否仍然優於當前時間。

+2

+1的更多細節。最好解釋你的問題並要求[.net方式](http://stackoverflow.com/questions/4385853/how-do-you-get-the-current-time-in-milliseconds-long-in- vb-net/4386533#4386533),而不是尋找Java解決方案的確切翻譯。後者會產生更長的代碼,對於有經驗的.Net開發者來說看起來有點奇怪。 – MarkJ 2010-12-08 13:01:05

+0

@MarkJ - 是的,我很快寫下了我最初的問題(在這個特殊時刻缺乏時間);只有在我添加了細節之後,才能看到確切的翻譯確實不合適或有效。雖然給出的答案幫助我理解了所有這些對象(例如,發現TimeLapse,以及給出的示例)。 – Gnoupi 2010-12-08 13:26:05

回答

13

獲取當前時間和時間原點之間的差異,使用TotalMilliseconds屬性來獲取時間跨度爲毫秒,並且將其轉換爲長。

DirectCast((Datetime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds, Int64) 
+3

如果代碼將被頻繁調用,我可能會創建一個靜態(VB中的`Shared`)變量來保存`New DateTime(1970,1,1)`值,因爲它是靜態的。無需爲每個呼叫重新創建對象。 – 2010-12-08 09:40:57

0
Dim myTime As DateTime = DateTime.Now 
    MessageBox.Show(myTime.Millisecond) 
5

你可以使用

(DateTime.Now-new DateTime(1970,1,1)).TotalMilliseconds 

順便說一句,只是你的問題猜你可能是什麼更適合您可能是

DateTime.UtcNow 
3

有關信息,我個人的情況下,以另一種方式修復,沒有得到與System.currentTimeMilli()完全相同的值:

Dim loginExpirationDate As Date 

'... 

'Checking code: 
If (loginExpirationDate < DateTime.Now) Then 
    reconnect() 
End If 

'update the expiration date 
loginExpirationDate = DateTime.Now.AddMilliseconds(timeoutMilli) 
相關問題