JUCE类库Time类详解

日期和时间类Time的实例代表一个精确的绝对时间点,其内部精度为毫秒 。可基于给出的毫秒数创建本类的对象,也可基于给出的年月日时分秒来创建对象。本类的一大批成员函数可返回当前对象所代表的年/月/日/时/分/秒/毫秒的数值类型和字符串类型,该对象所处于的月份名称,星期几名称,是本年度/本月/本周的第几天等等。并可设置计算机时钟。

实际编程中,几乎无需显式创建Time对象,而是直接调用静态函数getCurrentTime()来返回本类的栈对象,而后使用该对象串联调用其它非静态函数。Time类重载了一大批运算符,可用于和时间点有关的各类常规运算。

示例代码:

/* 将缓冲对象中的MIDI数据块发送到MIDI输出设备,实现播放。
该语句位于一个循环结构的最后,每次循环,均读取一条MIDI音轨的数据,而后将其发送给MIDI输出设备。sendBlockOfMessages()的2参时间点信息用于转换和计算本音轨中每个MIDI事件的时间戳, 该参数非常重要,是确保各个MIDI音轨中的MIDI事件能够同步播放的关键(多个声部同时发声)*/
midiOutput->sendBlockOfMessages (buffer, 
                                 Time::getMillisecondCounter() + 50, samples);

注:Time对象的“基准时间点”为1970年1月1日0时0分0秒0毫秒。

Time类的静态函数
 getCurrentTime () 返回当前时间,返回值为本类对象
 getWeekdayName () 返回1参(0-6)是星期几,返回字符串对象。0为Sunday
 getMonthName () 返回月份的名称,参数和返回值同上。注意:0为1月
 currentTimeMillis () 返回1970年1月1日0时0分0秒至今的毫秒数
 getMillisecondCounter () 返回固定事件以来的毫秒数(通常是操作系统启动以来)
 getMillisecondCounterHiRes () 返回固定事件以来的高精度毫秒数
 waitForMillisecondCounter () 一直等待, 直到getMillisecondCounter()到达给出的参数值,此函数将使调用线程处于休眠状态
 getHighResolutionTicks () 返回当前高精度计数的嘀嗒值
 getHighResolutionTicksPerSecond () 返回每秒的高精度嘀嗒值
 highResolutionTicksToSeconds () 将高精度嘀嗒值转换为秒数
 secondsToHighResolutionTicks () 将秒数转换为高精度嘀嗒值

RelativeTime

Time类代表一个时间点(绝对时间),而RelativeTime则代表一段时间(相对时间),这段时间以秒为单位。比如:3时10分25秒是一个时间点(Time),而“完成这件事需要5分钟”,这个5分钟则是RelativeTime。

RelativeTime类重载了一大批算术运算符和关系运算符,另有多个静态函数,这些静态函数均为基于给出的数值创建本类的普通型栈对象,而该类的成员函数则大多是基于当前对象的值返回该值所对应的周数、天数、小时数、分钟数、秒数和毫秒数。这些函数的使用比较简单,不再细述。