如何获取当前时间戳

7

我正在连接一个 API,其中一个参数是 Long (13 位数字) 用于在 VB.Net 中保存当前 timestamp,它表示从 0:00:00 01.01.1970 in GMT 至当前时间经过的毫秒数。

格式应该像这样 1290932238757

我尝试了以下语法:

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

但是输出结果是:
01/12/2013 02:06:24
1个回答

11

如果我理解得正确,这个工作吗?

Dim milliseconds = CLng(DateTime.UtcNow.Subtract(New DateTime(1970, 1, 1))
                                                       .TotalMilliseconds)

我在示例中使用了DateTime.UtcNow,但您可以根据您计划如何使用数据来使用DateTime.Now。有关差异的更多信息,请参见此线程


我无法理解它是如何工作的:我认为应该是CLng(DateTime.UtcNow.Subtract(New DateTime(1970, 1, 1)).ToUniversalTime.TotalMilliseconds)。无论如何,这种方法并未返回正确的时间戳。通过@keyboardP调用,则返回正确的时间戳,但由于它比较的是UtcNow和1/1/1970(时区感知的日期),所以这是怎么可能的呢? - Desmond
我终于明白了。new Date(1,1,1970)创建的日期是没有时区意识的。.ToUniversalTime方法会将其转换为本地时间。最好的方法是创建有时区意识的日期:New DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc) - Desmond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接