以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教这种时间戳怎么转为日期时间?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=193762)

--  作者:rogen
--  发布时间:2024/10/11 13:59:00
--  请教这种时间戳怎么转为日期时间?
第三方平台导出的数据里有个时间戳字段
里面存的实际是数值,将单元格设置为日期时间格式后,显示为如下,
例:
45568.77     -->   2024/10/3 18:25
45575.94     -->   2024/10/10 22:30

我在网上没搜到这种时间戳格式的转换公式
请问有知道的朋友不?

--  作者:cd_tdh
--  发布时间:2024/10/11 14:31:00
--  
百度参考带代码:不知道对不对,自己修改一下
Dim myDate As Date
Dim myNumber As Long
myNumber = 45568.77 \'假设数字为45568.77
myDate = DateSerial(Year:=Year(DateSerial(1900, 1, 1)) + Int(myNumber / 365), _
                    Month:=Month(DateSerial(1900, 1, 1)) + Int((myNumber Mod 365) / 30.42), _
                    Day:=Day(DateSerial(1900, 1, 1)) + (myNumber Mod 365) Mod 30.42)
MessageBox.Show( "日期为:" & myDate)

--  作者:rogen
--  发布时间:2024/10/11 14:35:00
--  
感谢回复,结果不正确
正确的是: 2024/10/3 18:25
代码返回:2024/11/6

--  作者:cd_tdh
--  发布时间:2024/10/11 14:39:00
--  
这个方法也可以试试:
Dim oaDate As Double = 45568.77
Dim days As Integer = CInt(Math.Floor(oaDate))
Dim hoursAndMinutes As Double = oaDate - days
\' 创建一个基准日期,OA日期的0对应于1899年12月30日
Dim baseDate As New DateTime(1899, 12, 30)
Dim dateResult As DateTime = baseDate.AddDays(days)
\' 将小时和分钟转换为TimeSpan
Dim hours As Integer = CInt(Math.Floor(hoursAndMinutes))
Dim minutes As Integer = CInt(((hoursAndMinutes - hours) * 60))
Dim timeResult As New TimeSpan(hours, minutes, 0)
\' 将时间添加到日期
Dim result As DateTime = dateResult.Add(timeResult)
MessageBox.Show( "日期为:" & result.ToString("yyyy-MM-dd HH:mm:ss"))

--  作者:有点蓝
--  发布时间:2024/10/11 14:59:00
--  
msgbox(DateTime.FromOADate(45568.77) )
--  作者:rogen
--  发布时间:2024/10/11 15:03:00
--  
这个给力,短小精准

再次感谢 cd_tdh 的热心回复

--  作者:cd_tdh
--  发布时间:2024/10/11 15:09:00
--  
msgbox(DateTime.FromOADate(45568.77) ) 算出来不对,得到的结果是2024-10-03 18:28:48
不知道什么问题

--  作者:rogen
--  发布时间:2024/10/11 15:56:00
--  
我给的数字是取了2位小数的
实际存的值是高精度的,比如:

45575.9380671296   --> 2024/10/10  22:30:49
45568.4551736111   --> 2024/10/3  10:55:27

这个函数没问题