中如何计算两个不同的期时间差.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中如何计算两个不同的期时间差

Labview中如何计算两个不同日期的时间差一、绝对时间和相对时间 数值控件、时间标识、格式化字符串、波形图、波形图表等控件均可以设置为时间格式,设置为时间时要求我们选择“绝对时间”或者“相对时间”。所以我们有必要搞清楚什么是“绝对时间”和“相对时间”。从0时刻开始计时的时间称作绝对时间,我们通常说的“系统时间和日期”指的就是绝对时间。“相对时间”在其它编程语言中,称作“时间跨度”,相对时间并不关注开始计时的时刻,相对时间关注的是两个绝对时间的差值,比如秒数百米赛跑用时几秒,用的就是相对时间。绝对时间可以用年、月、星期、日、时、分、秒、小数秒来表示,但是相对时间是用日、时、分、秒、小数秒来表示的,这与我们日常的习惯是有很大区别的。在日常生活中,我们经常说两年过去,几个月过去了,这样的说法实际上是不精确的。因为每年的天数是不固定的,每个月的天数也是不固定的,因此无法用年和月表示准确的相对时间。只有星期、天、时、分、秒是准确的,每小时为3600秒在任何情况下都是成立的,而年、月与秒之间是无法直接转换的。二、0时刻当我们从控件选板中建一个新的控件时,控件此时的值为默认值。数值型控件的默认值如果没有重新设置,一般是0。时间标识作为特殊的数值控件,当我们新创建时,时间标识控件的默认值是什么?从上图可以看出,新创建的时间标识的默认值实际上也是0.从控件上看,数值0对应的时间为0,日期不显示。下面我们修改当前时间控件,把时间修改成8点零1秒。从上图可以看出,LABVIEW中的时间都是从1904年1月1日8点开始计算的,这个时间就是0时刻。我们计算时间时实际上计算的是从此刻开始经历的秒数。经历过的秒数可以是负数,表示此时计算的时间在0时刻之前。回过头来再看看帮助文件是如何定义的:LabVIEW将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64位二进制)表示自1904年1月1日周五凌晨[01-01-1904 00:00:00]以来无时区影响的所有秒数。后两个不带符号整数(64位二进制)表示小数秒部分。帮助文件中定义的和我们图中演示的是不同的,原因在于我们使用的时间是包括时区的,世界各地的所在的时区是不同的,因此定义的0时刻是无时区影响的。无时区影响的时间日期,LABVIEW中称作“通用时间”。由于我们所使用的计算机操作系统中的时间日期是包括时区的,所以只有非常特别的场合才会涉及到“通用时间”,绝大多数场合谈到的都是“绝对时间”和“相对时间。三、时间标志的内存映射Labview提供了非常丰富的时间操作函数。Labview8.2版本后又提出了新的有关时间的数据类型,时间标识(TIMESTAMP)。 时间标识早期通常翻译成“时间戳”,实际上是一种改进型的数值控件,从时间标识控件所在的控件选板就可以初步判断出,时间标识就是特殊的数值控件。要想真正了解一种数据类型,首要的问题是要搞清楚该数据类型在内存中或者文件中是如何存储的。我们知道数值型控件可以选择控件所包含的数据类型,比如双精度浮点数、整型数、32位整型数、16位整型数等等。时间标识控件是不允许选择它所包含的数据类型的,这说明时间标识所包含的数据类型是固定的。从帮助文件中,我们可以找到时间标识在内存中的存储方式--映射。LabVIEW将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64位二进制)表示自1904年1月1日周五凌晨[01-01-1904 00:00:00]以来无时区影响的所有秒数。后两个不带符号整数(64位二进制)表示小数秒部分。Labview利用16个字节(128位)表示时间信息,其中前8个字节(64位)由两个I32构成,表示从0时刻开始经历过的秒数。后面8个字节为U64数据,表示秒的小数部分。四、时间标识与双精度数之间的相互转换在时间标识出现以前,经常用双精度数表示从0时刻经历过的秒数。我们知道双精度数所占的内存空间也是8个字节,与时间标识相同。但是时间标识实际上是定点数,它的小数点位置是确定的,因此实际上双精度数表示时间与时间标识相比,不如时间标识精确。采用数值转换函数就可以实现时间标识和双精度数之间的相互转换,如下图所示:五、强制转换时间标识至数值既然我们已经知道了时间标识在内存中的存储方式,我们自然就可以通过强制转换函数分解出时间标识的两个组成部分,秒和秒的小数部分。因为时间标识占有8个字节的内存空间,并分成前后各4个字节,因此可以创建一个簇或者数组来表示它,下面的例子创建一个簇,包含3个元素。前两个元素表示秒的整数部分,第3个元素表示秒的小数部分。从上图可以看出,秒的整数部分非常明显。小数部分就不容易分辨出来了,这要非常了解浮点数的二进制表示方式才可以。小数部分虽然有4个字节(64位)构成,但是实际上只有前8位(一个字节)会发生变化,这也说明了“获取时间

文档评论(0)

ww39ef + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档