时间标识是一种特殊的数值型控件,在早期版本的LABVIEW中并不存在,可能是8.X后出现的。这种特殊类型的数值型控件包含了我们需要的全部时间、日期信息。

在定时函数选板中,LABVIEW提供了许多的时间类相关函数,包括时间、日期转换为字符串函数,实际上格式化写入字符串函数完全支持时间标识,其转换功能更多、更全面。

与数值转换为字符串类似,时间标识转换为字符串的关键也是格式化字符串,LABVIEW提供了许多专门的时间相关的时间格式代码,这些格式符不仅仅可以用来转化为字符串,同时也可以时间标识控件进行特色显示,以下的例程中将同时利用字符串和时间标识显示控件显示我们需要的时间日期。

一、获取系统时间和日期(年、月、日、时、分、秒)

获取系统时间日期(年、月、日、时、分、秒)是最常用的时间操作,LABVIEW专门提供了格式化时间/日期函数,该函数可以直接获取当前的时间和日期,不需要添加任何时间代码,默认的时间代码为%c。

LABVIEW中的时间分为绝对时间和相对时间,绝对时间简单地说就是我们说的系统时间日期,相对时间可以用来表示经历过的时间,比如两个绝对时间(系统时间)的差值。

绝对时间的时间格式代码为%<>T,这是时间格式代码的容器,其它格式代码应位于<>中。

时间格式代码%c根据当地计算机语言规定的格式显示日期和时间。

Picture
对于时间标识显示控件,它的时间日期显示格式一般通过属性对话框设置,为了说明时间格式代码,我采用了属性节点设置。

二、分别获取时间和日期字符串

很多时候,我们需要分别获取时间或者日期,LABVIEW专门提供了获取日期/时间字符串函数,该函数返回两个字符串,分别表示时间和日期,具体用法见下图。


Picture
利用格式化写入字符串函数同样可以获取时间和日期,而且可以自己定义显示格式,比如年、月、日之间的分隔符以及其显示顺序,时、分、秒也是如此。

1、获取日期(年、月、日)

 年的时间格式代码为:两位年份(比如97)%y,四位年份(比如1997)%Y。月的时间格式代码为:%m。天的时间格式代码为:%d

Picture
2、获取时间(时、分、秒)

时的时间格式代码有两种:24小时制度---%H,12小时制度---%I;

分的时间格式码为:%M;(小写表示月份)

秒的时间格式码为:%S。

Picture
三、任意获取年、月、日、时、分、秒

通过年、月、日、时、分、秒的时间格式代码,我们就可以任意获取其中一个或者几个,这在定时监控或者定时数据记录中非常常见。

下面的例子利用格式化写入字符串函数每分中执行一次操作,比如报警、写入文件等等。为了保证每分钟仅操作一次,必须在分钟改变的上升沿时执行操作。


Picture
四、获取小数(毫秒)数

我曾经在下面的文章中介绍了如何获取毫秒时间。

http://www.eefocus.com/csxcs366/blog/11-03/205616_eb58d.html

利用格式化写入字符串函数同样可以实现,见下图:

Picture
五、获取“星期”相关信息

LABVIEW中的时间标识包含了系统时间的全部信息,当然也包括了有关“星期”的几个时间格式码。在一些欧洲的合资企业中,经常使用周来表示工作时间,比如今天是一年中的第几周第几天等等,使用星期相关的时间格式码可以轻松实现。

时间格式码%A表示星期名称全称(比如星期一),%a表示星期名称缩写(比如星期一)。

对于中文操作系统,%A和%a作用完全相同,但是对于英文操作系统则完全不同。

时间格式码%w返回10进制方式表示的星期几(0-6),其中0表示周日。

 时间格式码%U返回一年中的星期数(0-53),周日为首日。

时间格式码%W返回一年中的星期数(0-53),周一为首日。


Picture
六、相对时间

绝对时间一般都是指的系统时间,存在一个0时刻。很多时候,我们并不关心当前的绝对时间。比如篮球比赛、测试程序运行时间等等,这些都是“经历过”的时间,实际上是两个绝对时间的差值,我们称这样的时间差为相对时间。

相对时间一般以双精度数表示,表示经过过的秒数。对于相对时间,也可能需要以天、时、分、秒等表示。对于这些需要,我们不需要自己计算,采用相对时间就可以自动换算了。

相对时间的时间格式码为:%t。%<>表示相对时间的容器。

Picture
七、其它

除了上述介绍的时间格式码,LABVIEW还提供了一些其它的时间格式码,比如返回地区时差,当前时区名称等等,使用非常简单,就不具体介绍了。


 


LabVIEWer
04/13/2013 20:55

陈老师,您好。请问如何将一个时间字符串如"2013-04-14 11:53:00.123"转换成LabVIEW时间标识?利用“日期/时间至秒转换”(Date/Time To Seconds)函数进行转换时还需要提供"day of week","day of year","DST" 等信息才可以。

Reply



Leave a Reply.