在VB.Net中,你如何获得以毫秒(long)为单位的当前时间?

问题描述:

我正在寻找与VB.NET中的Java System.currentTimeMilli()等价的东西。在VB.Net中,你如何获得以毫秒(long)为单位的当前时间?

什么是要调用的方法?我知道Datetime.Now,但不是关于实际转换为长毫秒。


我的更多具体细节需要:

我需要管理登录到期。所以很有可能当我登录时,我会设置一个“expiration_time_milli”,等于当前时间+超时值。然后,如果我想检查我的登录是否有效,我将检查“expiration_time_milli”是否仍然优于当前时间。

+2

+1的更多细节。最好解释你的问题并要求[.net方式](http://*.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

获取当前时间和时间原点之间的差异,使用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

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

你可以使用

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

顺便说一句,只是你的问题猜你可能是什么更适合您可能是

DateTime.UtcNow 

有关信息,我个人的情况下,以另一种方式修复,没有得到与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) 

您也可以使用这个值,如果你正在寻找的只是一个唯一的编号。 DateTime.Now.Ticks

查看详情 http://msdn.microsoft.com/en-us/library/system.datetime.ticks(v=vs.110).aspx