经过一天的研究,有谁知道如何将19位数字的时间戳从.zvi文件的元数据(由axiovision,Zeiss生成)转换为实时格式?(输出可能包括毫秒)
例如,时间戳为: 4675873294709522577
谢谢!
阿农
发布于 2014-01-22 11:35:59
Matlab解决方案:
主要问题不是x2mdate转换(它只是将零年和1900年之间的天数相加,如上所述)。这种到双精度的转换可以通过Matlab中的类型转换来完成:
myZVI = 4675946358764751269;
timestampDouble = typecast(int64(myZVI),'double');
myTime = datestr(timestampDouble + 693960, 'dd-mmm-yyyy HH:MM:SS.FFF');
693960是零年和1900年之间的天数;如果你不需要绝对日期,只需要两个时间戳之间的差,你甚至不需要这个;例如,我的两个视频帧之间的间隔可以这样计算:
myZVI2 = 4675946358764826427;
timestampDouble2 = typecast(int64(myZVI2),'double');
myTimeDifference = datestr(timestampDouble2 - timestampDouble,'SS.FFF');
希望这能有所帮助:-)
发布于 2013-10-10 17:06:17
这是Microsoft OLE自动化日期。但是您已经将其读取为64位长整数,而不是它应该是的64位双精度。
您没有指定语言,因此我将选择C#:
long l = 4675873294709522577L;
byte[] b = BitConverter.GetBytes(l);
double d = BitConverter.ToDouble(b, 0);
Debug.WriteLine(d); // 41039.901598693
DateTime dt = DateTime.FromOADate(d);
Debug.WriteLine(dt); // 5/10/2012 9:38:18 PM
有关更多信息,请访问this thread。
OLE自动化日期基本上是自1900年1月1日以来没有任何特定时区参考的完整24小时天数。
https://stackoverflow.com/questions/19299491
复制