在VB.Net中,你如何获得以毫秒(long)为单位的当前时间?
我正在寻找与VB.NET中的Java System.currentTimeMilli()
等价的东西。在VB.Net中,你如何获得以毫秒(long)为单位的当前时间?
什么是要调用的方法?我知道Datetime.Now,但不是关于实际转换为长毫秒。
我的更多具体细节需要:
我需要管理登录到期。所以很有可能当我登录时,我会设置一个“expiration_time_milli”,等于当前时间+超时值。然后,如果我想检查我的登录是否有效,我将检查“expiration_time_milli”是否仍然优于当前时间。
获取当前时间和时间原点之间的差异,使用TotalMilliseconds
属性来获取时间跨度为毫秒,并且将其转换为长。
DirectCast((Datetime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds, Int64)
如果代码将被频繁调用,我可能会创建一个静态(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
+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
@MarkJ - 是的,我很快写下了我最初的问题(在这个特殊时刻缺乏时间);只有在我添加了细节之后,才能看到确切的翻译确实不合适或有效。虽然给出的答案帮助我理解了所有这些对象(例如,发现TimeLapse,以及给出的示例)。 – Gnoupi 2010-12-08 13:26:05