日期和时间函数
| In[1]:= |
| Out[1]= |
Mathematica DateList 函数的返回值是所用计算机系统设定的当前日期和时间. 它假定夏令时等已经在所用计算机系统中进行了处理. 并且,它假定已经对所用计算机系统设置了适当的时区.
变量 $TimeZone 返回所用计算机系统设定的当前时区. 时区按小时数给出,给它加上 Greenwich 标准时间(GMT)后就得到正确的当地时间. 例如,美国东部标准时间(EST)对应于时区
. 注意,夏令时校正必须包含在时区中,所以美国东部夏令时(EDT)对应于时区
.
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
| AbsoluteTime[] | 从1900年1月1日起的总秒数 |
| SessionTime[] | 当前 Mathematica 进程开始后的秒数 |
| TimeUsed[] | 当前 Mathematica 进程开始中 CPU 使用秒数 |
| $TimeUnit | 所用计算机系统中最小时间区间 |
应当认识到,在任何计算机系统中,有一个确定的时间测量刻度. 该刻度以全局变量 $TimeUnit 的值给出. 它一般是一秒的
或者
.
| Pause[n] | 至少暂停 n 秒 |
| In[4]:= |
| Out[4]= |
| In[5]:= |
| Out[5]= |
| AbsoluteTime[date] | 从日期转换为绝对时间 |
| DateList[time] | 从绝对时间转换为日期 |
| In[6]:= |
| Out[6]= |
| In[7]:= |
| Out[7]= |
| In[8]:= |
| Out[8]= |
用户可以使用 DateList["string"] 把日期字符串转换为日期列表,只要日期格式足够清楚.
| In[9]:= |
| Out[9]= |
为了对转换过程进行更多的控制,用户可以指定字符串中出现的日期元素的顺序和类型. 元素可以是字符串,如
、
、
、
、
、
、
、
、
或者
.
| In[10]:= |
| Out[10]= |
如果日期元素分隔符包含字母或者数字,那么它们也必须被指定为日期元素的一部分.
| In[11]:= |
| Out[11]= |
| DateString[] | 给出表示当前本地日期和时间的字符串 |
| DateString[datespec, elems] | 给出日期的元素 elems 以及由 datespec 给定的时间 |
DateString 用于给出日期和时间的美观的字符串表示. 精确输出格式可以从日期元素的长列表,例如
、
、
等中指定.
| In[12]:= |
| Out[12]= |
| In[13]:= |
| Out[13]= |
| DatePattern[elems] | 匹配具有给定元素的日期的字符串模式 |
用户可以在字符串匹配函数中使用 DatePattern[elems] 作为字符串模式. 日期元素与 DateList 中使用的相同,虽然默认的日期元素分隔符被限制为
、
、
或者
字符. 其它分隔符可以在日期元素列表中明确给出.
| In[15]:= |
| Out[15]= |
| DateListPlot[list] | 从具有日期坐标的数据列表中生成图线 |
| DateListPlot[list,datespec] | 从具有以 datespec 指定的日期的数据列表中生成图线 |
| DateListLogPlot[list] | 从具有日期坐标的数据列表中生成线性对数图线 |
| DateListLogPlot[list,datespec] | 从具有以 datespec 指定的日期的数据列表中生成线性对数图线 |
DateListPlot 可以用来使用日期或时间的水平坐标画出数据图形. 日期可以是列表、字符串或者绝对时间,分别对应于DateList、DateString 和 AbsoluteTime. 日期指定值 datespec 可以赋给具有给定数据
的相关日期. DateListLogPlot 允许用户使用对数垂直标度画出数据图形.
| In[16]:= |
| In[17]:= |
| Out[17]= | ![]() |
| In[18]:= |
| Out[18]= | ![]() |
| In[19]:= |
| Out[19]= | ![]() |
| Timing[expr] | 计算 expr,并且返回所需的CPU时间列表,包括取得的结果 |
| AbsoluteTiming[expr] | 计算 expr,给出采用的绝对时间 |
Timing 用来计算与单个 Mathematica 表达式计算有关的时间. Timing 与 TimeUsed 的增量对应. 注意,这仅包含与在 Mathematica 内核中表达式实际计算有关的时间. 表达式的输出格式化时间以及与外部程序有关的时间没有包括在内.
AbsoluteTiming 允许用户测量绝对的总占用时间. 然而,应当认识到,AbsoluteTiming 和 Timing 的特定计算所报告的时间取决于许多因素.
首先,该时间依赖于所用计算机系统. 它不仅依赖于指令时间,而且依赖于内存缓冲,以及在计算中对 Mathematica 内部代码进行编译时优化的细节.
这个时间也依赖于进行计算时 Mathematica 进程的确切状态. 许多 Mathematica 所用的内部优化依赖于前面计算的细节. 例如,Mathematica 经常使用前面的计算结果,以避免不必要的重复计算. 另外,第一次按某种特殊方式调用一些Mathematica 函数时它们建立一些内部表,再次按同一种方式调用它们时运行就快得多. 由于这些原因,一个运算在同一个 Mathematica 进程的不同点进行时所用的时间不一定相同.
| In[20]:= |
| Out[20]= |
| In[21]:= |
| Out[21]= |
| In[22]:= |
| Out[22]= |
注意,由 Timing 所得的结果精确到所用计算机系统的时间刻度 $TimeUnit. 例如,计时(timing)报告的结果
事实上有可能与 $TimeUnit 相同.
| TimeConstrained[expr,t] | 计算表达式 expr,t 秒钟以后中断计算 |
| TimeConstrained[expr,t,failexpr] | 没有满足时间限制时返回 failexpr |
在交互式地使用 Mathematica 时,经常要进行一个计算,但这个计算时间如果太长时,我们要退出该计算. 可以用 TimeConstrained 在一个程序中模拟这个过程. TimeConstrained 计算一个表达式,到一定的时间后,在没有完成时就中断这个计算,返回 $Aborted 或者所指定的表达式.
用 TimeConstrained 可以令 Mathematica 在限定的时间内按一种特定的方式处理一个问题,当这种处理方式没有成功时就转向另一种处理方式. 但要注意到当 Mathematica 在某一计算过程中不能中断时,TimeConstrained 可能会超时. 另外,不同计算机系统的运行速度不同,所以使用 TimeConstrained 的程序往往在不同的计算机系统中会给出不同的结果.



