日期和时间函数

DateList[]按形式 给出当前的本地日期和时间
DateList[TimeZone->z]给出时区 z 中的当前日期和时间
$TimeZone给出所用计算机系统设定的时区

找出日期和时间.

给出当前日期和时间.
In[1]:=
Click for copyable input
Out[1]=

Mathematica DateList 函数的返回值是所用计算机系统设定的当前日期和时间. 它假定夏令时等已经在所用计算机系统中进行了处理. 并且,它假定已经对所用计算机系统设置了适当的时区.

变量 $TimeZone 返回所用计算机系统设定的当前时区. 时区按小时数给出,给它加上 Greenwich 标准时间(GMT)后就得到正确的当地时间. 例如,美国东部标准时间(EST)对应于时区 . 注意,夏令时校正必须包含在时区中,所以美国东部夏令时(EDT)对应于时区 .

给出由计算机系统设定的当前时区.
In[2]:=
Click for copyable input
Out[2]=
在 +9 时区给出当前日期和时间,这是日本的时区.
In[3]:=
Click for copyable input
Out[3]=
AbsoluteTime[]从1900年1月1日起的总秒数
SessionTime[]当前 Wolfram 语言进程开始后的秒数
TimeUsed[]当前 Wolfram 系统进程开始中 CPU 使用秒数
$TimeUnit所用计算机系统中最小时间区间

时间函数.

应当认识到,在任何计算机系统中,有一个确定的时间测量刻度. 该刻度以全局变量 $TimeUnit 的值给出. 它一般是一秒的 或者 .

Pause[n]至少暂停 n

计算中的暂停.

这里给出了各种时间函数.
In[4]:=
Click for copyable input
Out[4]=
这里暂停了10秒,然后重新计算时间函数. 注意,TimeUsed[] 不受暂停影响.
In[5]:=
Click for copyable input
Out[5]=
AbsoluteTime[date]从日期转换为绝对时间
DateList[time]从绝对时间转换为日期

日期和绝对时间之间的转换.

为当前日期.
In[6]:=
Click for copyable input
Out[6]=
给当前日期加一个月.
In[7]:=
Click for copyable input
Out[7]=
给出所加这一个月的秒数.
In[8]:=
Click for copyable input
Out[8]=
DateList["string"]把日期字符串转换为日期列表
DateList[{"string",{"e1","e2",}}]通过从 中提取元素 获得日期列表

从不同的日期格式转换.

用户可以使用 DateList["string"] 把日期字符串转换为日期列表,只要日期格式足够清楚.

这里试图把字符串解释为日期.
In[9]:=
Click for copyable input
Out[9]=

为了对转换过程进行更多的控制,用户可以指定字符串中出现的日期元素的顺序和类型. 元素可以是字符串,如 或者 .

这里使用指定的元素提取日期.
In[10]:=
Click for copyable input
Out[10]=

如果日期元素分隔符包含字母或者数字,那么它们也必须被指定为日期元素的一部分.

这里提取包含字母作为分隔符的日期.
In[11]:=
Click for copyable input
Out[11]=
DateString[]给出表示当前本地日期和时间的字符串
DateString[datespec, elems]给出日期的元素 elems 以及由 datespec 给定的时间

转换为不同的日期格式.

DateString 用于给出日期和时间的美观的字符串表示. 精确输出格式可以从日期元素的长列表,例如 等中指定.

这里以默认格式给出当前日期和时间.
In[12]:=
Click for copyable input
Out[12]=
这里对给定的日期指定格式.
In[13]:=
Click for copyable input
Out[13]=
DatePattern[elems]匹配具有给定元素的日期的字符串模式

从字符串中提取日期.

用户可以在字符串匹配函数中使用 DatePattern[elems] 作为字符串模式. 日期元素与 DateList 中使用的相同,虽然默认的日期元素分隔符被限制为 或者 字符. 其它分隔符可以在日期元素列表中明确给出.

这里从字符串中提取具有给定格式的日期.
In[14]:=
Click for copyable input
Out[14]=
这里使用明确分隔符提取日期.
In[15]:=
Click for copyable input
Out[15]=
DateListPlot[list]从具有日期坐标的数据列表中生成图线
DateListPlot[list,datespec]从具有以 datespec 指定的日期的数据列表中生成图线
DateListLogPlot[list]从具有日期坐标的数据列表中生成线性对数图线
DateListLogPlot[list,datespec]从具有以 datespec 指定的日期的数据列表中生成线性对数图线

使用日期坐标画出数据的图形.

DateListPlot 可以用来使用日期或时间的水平坐标画出数据图形. 日期可以是列表、字符串或者绝对时间,分别对应于DateListDateStringAbsoluteTime. 日期指定值 datespec 可以赋给具有给定数据 的相关日期. DateListLogPlot 允许用户使用对数垂直标度画出数据图形.

这里收集一些金融时间序列的数据.
In[16]:=
Click for copyable input
这里画出该金融数据的图线.
In[17]:=
Click for copyable input
Out[17]=
这里在对数标度上画出同样的数据.
In[18]:=
Click for copyable input
Out[18]=
这里画出不包含明确日期的月数据的图线.
In[19]:=
Click for copyable input
Out[19]=
Timing[expr]计算 expr,并且返回所需的CPU时间列表,包括取得的结果
AbsoluteTiming[expr]计算 expr,给出采用的绝对时间

Wolfram 语言计时(timing)操作.

Timing 用来计算与单个 Wolfram 语言表达式计算有关的时间. TimingTimeUsed 的增量对应. 注意,这仅包含与在 Wolfram 语言内核中表达式实际计算有关的时间. 表达式的输出格式化时间以及与外部程序有关的时间没有包括在内.

AbsoluteTiming 允许用户测量绝对的总占用时间. 然而,应当认识到,AbsoluteTimingTiming 的特定计算所报告的时间取决于许多因素.

首先,该时间依赖于所用计算机系统. 它不仅依赖于指令时间,而且依赖于内存缓冲,以及在计算中对 Wolfram 语言内部代码进行编译时优化的细节.

这个时间也依赖于进行计算时 Wolfram 语言进程的确切状态. 许多 Wolfram 语言所用的内部优化依赖于前面计算的细节. 例如,Wolfram 语言经常使用前面的计算结果,以避免不必要的重复计算. 另外,第一次按某种特殊方式调用一些Wolfram 语言函数时它们建立一些内部表,再次按同一种方式调用它们时运行就快得多. 由于这些原因,一个运算在同一个 Wolfram 语言进程的不同点进行时所用的时间不一定相同.

给出这个运算所需要的 CPU 时间. 其中,使计算结果作为空值 Null 给出.
In[20]:=
Click for copyable input
Out[20]=
现在 Wolfram 语言内部已经建立了阶乘运算的表,在可测量范围内该计算几乎不花 CPU 时间.
In[21]:=
Click for copyable input
Out[21]=
然而,一些绝对时间确实是流逝了.
In[22]:=
Click for copyable input
Out[22]=

注意,由 Timing 所得的结果精确到所用计算机系统的时间刻度 $TimeUnit. 例如,计时(timing)报告的结果 事实上有可能与 $TimeUnit 相同.

TimeConstrained[expr,t]计算表达式 exprt 秒钟以后中断计算
TimeConstrained[expr,t,failexpr]没有满足时间限制时返回 failexpr

限时计算.

在交互式地使用 Wolfram 语言时,经常要进行一个计算,但这个计算时间如果太长时,我们要退出该计算. 可以用 TimeConstrained 在一个程序中模拟这个过程. TimeConstrained 计算一个表达式,到一定的时间后,在没有完成时就中断这个计算,返回 $Aborted 或者所指定的表达式.

TimeConstrained 可以令 Wolfram 语言在限定的时间内按一种特定的方式处理一个问题,当这种处理方式没有成功时就转向另一种处理方式. 但要注意到当 Wolfram 语言在某一计算过程中不能中断时,TimeConstrained 可能会超时. 另外,不同计算机系统的运行速度不同,所以使用 TimeConstrained 的程序往往在不同的计算机系统中会给出不同的结果.