我已经递交了大量带有日期和时间大整数值的表格。在MS Access中将刻度转换为日期时间值
实施例:1382575236393表示2013年12月2日10:30 PM
我的理解的是,这是蜱(纳秒)。我一直无法找出或找到一个公式或功能,将该刻度转换为在Microsoft Access 2010中使用的日期/时间值。
任何人都解决过这个问题吗?我在想某个地方会有VBA功能。
感谢
我已经递交了大量带有日期和时间大整数值的表格。在MS Access中将刻度转换为日期时间值
实施例:1382575236393表示2013年12月2日10:30 PM
我的理解的是,这是蜱(纳秒)。我一直无法找出或找到一个公式或功能,将该刻度转换为在Microsoft Access 2010中使用的日期/时间值。
任何人都解决过这个问题吗?我在想某个地方会有VBA功能。
感谢
VBA在大多数部分不随时间冻结自90年代中期,回来的时候VB生态系统是从一切天壤之别。它们有更多的内聚性(例如.NET框架)。
无论如何,没有标准的“tick”定义 - 在Unix/POSIX上,时间戳是自1970-01-01 00:00 UTC以来的秒数,在.NET DateTime.Tick
中是一百纳秒,但是Stopwatch.ElapsedTicks
是一个任意单位,所以它总体上有点复杂。
我不知道用什么样的规模,所以我做了一些分工,并发现它实际上是的毫秒从unix新纪元数量:今天
Nanoseconds: 1382575236393/86400000000000 = 0.01 of a day
100-Nanoseconds: 1382575236393/ 864000000000 = 1.6 days
Microseconds: 1382575236393/ 86400000000 = 16 days
Milliseconds: 1382575236393/ 86400000 = 160002 days (43 years)
Seconds: 1382575236393/ 86400 = 16002028 days (43,841 years!)
于43年前,合顺便说一句,是1970年,所以现在我们知道规模。我打算下注,因为这显然是基于1970-01-01 00:00纪元,它也将用UTC。 VBA不包含处理时区的任何内置功能(我知道这很愚蠢),所以我认为最好我们假设这是UTC日期值,所以您需要在适当的时候在您的应用程序中进行自己的时区转换。
那么事情就会变得很多你越需要使用64位整数这样做正确,but there's a problem: only VBA in 64-bit versions of Office 2010 or later include the LongLong
type,如果你使用的是32位Office或运行Office 2007或更早。现在,我们假设您正在运行64位Office 2010或2013.
无论如何,解决方案(与LongLong
)是将毫秒时间戳转换为UNIX时间戳,然后让VBA将秒添加到时期。注意:从不自己添加秒数到一年,因为你会忘记诸如闰秒,闰年和其他小技巧。
Public Function MilisecondUnixTimestampToVBDate(milisecondUnixTimestamp As LongLong) As Date
Dim unixTimestamp As Long
unixTimestamp = milisecondUnixTimestamp/1000
Dim dt As Date
dt = DateAdd("s", unixTimestamp , #1/1/1970#)
MilisecondUnixTimestampToVBDate = dt
End Function
他说*“1382575236393代表2013年12月2日10:30 PM “*您的函数是否返回相同的日期/时间值或返回2013年10月24日上午12点40分36秒? – HansUp
@HansUp感谢您发现并感到羞愧,因为我没有对它进行测试。当我运行该功能时,我也会获得2013年10月24日的信息。我只是假设,因为规模看起来与Unix时间戳类似,这是正确的。我认为OP需要提供更多细节。 – Dai
对,这里有些奇怪。要么他给了我们错误的代表日期,要么那些“滴答”基于除[Unix时间戳](http://www.unixtimestamp.com/index.php)以外的内容。 – HansUp
即使简单:
Public Function TicksToDate(dblMilliseconds As Double) As Date
TicksToDate = DateAdd("s", dblMilliseconds/1000, #1/1/1970#)
End Function
你会发现这个有用:http://able2know.org/topic/70939-1 –