Foxtable(狐表)用户栏目专家坐堂 → 请教这种时间戳怎么转为日期时间?


  共有290人关注过本帖树形打印复制链接

主题:请教这种时间戳怎么转为日期时间?

帅哥哟,离线,有人找我吗?
rogen
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:581 积分:4770 威望:0 精华:0 注册:2015/11/22 10:28:00
请教这种时间戳怎么转为日期时间?  发帖心情 Post By:2024/10/11 13:59:00 [只看该作者]

第三方平台导出的数据里有个时间戳字段
里面存的实际是数值,将单元格设置为日期时间格式后,显示为如下,
例:
45568.77     -->   2024/10/3 18:25
45575.94     -->   2024/10/10 22:30

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

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3168 积分:21083 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:581 积分:4770 威望:0 精华:0 注册:2015/11/22 10:28:00
  发帖心情 Post By:2024/10/11 14:35:00 [只看该作者]

感谢回复,结果不正确
正确的是: 2024/10/3 18:25
代码返回:2024/11/6

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3168 积分:21083 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By: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"))

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110130 积分:560456 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/11 14:59:00 [只看该作者]

msgbox(DateTime.FromOADate(45568.77) )

 回到顶部
帅哥哟,离线,有人找我吗?
rogen
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:581 积分:4770 威望:0 精华:0 注册:2015/11/22 10:28:00
  发帖心情 Post By:2024/10/11 15:03:00 [只看该作者]

这个给力,短小精准

再次感谢 cd_tdh 的热心回复

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3168 积分:21083 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2024/10/11 15:09:00 [只看该作者]

msgbox(DateTime.FromOADate(45568.77) ) 算出来不对,得到的结果是2024-10-03 18:28:48
不知道什么问题

 回到顶部
帅哥哟,离线,有人找我吗?
rogen
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:581 积分:4770 威望:0 精华:0 注册:2015/11/22 10:28:00
  发帖心情 Post By:2024/10/11 15:56:00 [只看该作者]

我给的数字是取了2位小数的
实际存的值是高精度的,比如:

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

这个函数没问题

 回到顶部