以文本方式查看主题 - 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 这个函数没问题
|