labview mysql 时间戳_LabVIEW深入探索之绝对时间、通用时间和相对时间

本文深入探讨LabVIEW中的时间标识(时间戳)数据类型,介绍其内存映射、与双精度数的转换,以及如何通过强制转换操作时间标识的秒和小数秒部分。
摘要由CSDN通过智能技术生成

作为一种面向工程应用的编程语言,LabVIEW提供了非常丰富的时间操作函数。8.X后又提出了新的有关时间的数据类型,时间标识(TIMESTAMP)。时间标识早期通常翻译成“时间戳”,实际上是一种改进型的数值控件,从时间标识控件所在的控件选板就可以初步判断出,时间标识就是特殊的数值控件。

ee1fcf0885db73376697af5838774cc0.png

一、时间标识的内存映射

要想真正了解一种数据类型,首要的问题是要搞清楚该数据类型在内存中或者文件中是如何存储的。我们知道数值型控件可以选择控件所包含的数据类型,比如双精度浮点数、整型数、32位整型数、16位整型数等等。

时间标识控件是不允许选择它所包含的数据类型的,这说明时间标识所包含的数据类型是固定的。从帮助文件中,我们可以找到时间标识在内存中的存储方式--映射。

LabVIEW将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64位二进制)表示自1904年1月1日周五凌晨[01-01-190400:00:00]以来无时区影响的所有秒数。后两个不带符号整数(64位二进制)表示小数秒部分。

069bfff426e31db6df00c920773966b5.png

LabVIEW利用16个字节(128位)表示时间信息,其中前8个字节(64位)由两个I32构成,表示从0时刻开始经历过的秒数。后面8个字节为U64数据,表示秒的小数部分。

二、时间标识与双精度数之间的相互转换

在时间标识出现以前,经常用双精度数表示从0时刻经历过的秒数。我们知道双精度数所占的内存空间也是8个字节,与时间标识相同。但是时间标识实际上是定点数,它的小数点位置是确定的,因此实际上双精度数表示时间与时间标识相比,不如时间标识精确。

采用数值转换函数就可以实现时间标识和双精度数之间的相互转换,如下图所示:

2af5cced3efafb7412e393c1a0ba4f3a.png

三、强制转换时间标识至数值

既然我们已经知道了时间标识在内存中的存储方式,我们自然就可以通过强制转换函数分解出时间标识的两个组成部分,秒和秒的小数部分。

因为时间标识占有8个字节的内存空间,并分成前后各4个字节,因此可以创建一个簇或者数组来表示它,下面的例子创建一个簇,包含3个元素。前两个元素表示秒的整数部分,第3个元素表示秒的小数部分。

679a3e74033cc7f0ffdca37913f23b10.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值