Skip to content

6.7.4.5 时间与日期格式 ​

在 PSPP 中,时间 是一个间隔。时间格式在易于理解的时间间隔描述与 PSPP 对时间间隔的内部表示(即间隔所含的秒数)之间进行转换。PSPP 有三种时间格式:

时间格式模板示例
MTIMEMM:SS.ss91:17.01
TIMEhh:MM:SS.ss01:31:17.01
DTIMEDD HH:MM:SS.ss00 04:31:17.01

日期 是过去或未来某一时刻。在内部,PSPP 将日期表示为自 纪元 (1582 年 10 月 14 日午夜)起经过的秒数。日期格式在可读日期与 PSPP 对日期和时间的数值表示之间进行转换。PSPP 有多种日期格式:

日期格式模板示例
DATEdd-mmm-yyyy01-OCT-1978
ADATEmm/dd/yyyy10/01/1978
EDATEdd.mm.yyyy01.10.1978
JDATEyyyyjjj1978274
SDATEyyyy/mm/dd1978/10/01
QYRq Q yyyy3 Q 1978
MOYRmmm yyyyOCT 1978
WKYRww WK yyyy40 WK 1978
DATETIMEdd-mmm-yyyy HH:MM:SS.ss01-OCT-1978 04:31:17.01
YMDHMSyyyy-mm-dd HH:MM:SS.ss1978-01-OCT 04:31:17.01

前面表格中的模板描述了时间与日期格式如何被输入与输出:

dd

月份中的日期,从 1 到 31。输出时始终为两位数字。

mmmmm

月份。输出时,mm 为两位数字,mmm 为英文月份名的前三个字母(January、February……)。输入时,这两种格式以及罗马数字均可接受。

yyyy

年份。输出时,DATETIME 和 YMDHMS 始终产生 4 位年份;其他格式可产生 2 位或 4 位年份。2 位年份所假定的世纪取决于 EPOCH 设置(见 SET EPOCH)。输出时,超出纪元的年份会导致整个字段用星号(‘*’)填充。

jjj

年中的天数(儒略日),从 1 到 366。这恰好是三位数字,表示自年初起经过的天数。1 月 1 日被视为第 1 天。

q

年中的季度,从 1 到 4。季度始于 1 月 1 日、4 月 1 日、7 月 1 日和 10 月 1 日。

ww

年中的周数,从 1 到 53。输出时恰好为两位数字。1 月 1 日是第 1 周的第一天。

DD

天数计数,可为正数或负数。输出时至少为两位数字。

hh

小时计数,可为正数或负数。输出时至少为两位数字。

HH

一天中的小时,从 0 到 23。输出时恰好为两位数字。

MM

在 MTIME 中,为分钟计数,可为正数或负数。输出时至少为两位数字。

在其他格式中,为小时中的分钟,从 0 到 59。输出时恰好为两位数字。

SS.ss

分钟中的秒,从 0 到 59。整数部分输出时恰好为两位数字。输出时,秒与小数部分可能包含也可能不包含,取决于字段宽度与小数位数。输入时,秒与小数部分可选。DECIMAL 设置控制作为小数点接受并显示的小数点字符(见 SET DECIMAL)。

输出时,日期与时间格式使用表中所示的定界符。输入时,日期各组成部分可由空格或字符 ‘-’、‘/’、‘.’、‘,’ 之一分隔,时间各组成部分可由空格或 ‘:’ 分隔。输入时,分隔季度与年份的 ‘Q’ 以及分隔周与年份的 ‘WK’ 可以大写或小写,其周围的空格可选。

输入时,所有时间与日期格式都接受任意数量的头部与尾部空白。

时间与日期格式的最大宽度为 40 列。每种时间与日期格式的最小输入与输出宽度如下所示:

格式最小输入宽度最小输出宽度选项
DATE894 位年份
ADATE884 位年份
EDATE884 位年份
JDATE554 位年份
SDATE884 位年份
QYR464 位年份
MOYR664 位年份
WKYR684 位年份
DATETIME1717秒
YMDHMS1216秒
MTIME45
TIME55秒
DTIME88秒

表中,“选项”描述了增大输出宽度所能启用的事项:

4 位年份

比最小宽度宽 2 列的字段会包含 4 位年份。(DATETIME 和 YMDHMS 格式始终包含 4 位年份。)

秒

比最小宽度宽 3 列的字段会同时包含秒与分钟。比最小宽度宽 5 列或更宽的字段,还可以包含小数点与小数秒(但不超过格式小数位数所允许的数量)。

对于时间与日期格式,默认输出格式与输入格式相同,但如有必要,PSPP 会将字段宽度增大到输出所允许的最小值。

窄于字段宽度的时间或日期在字段内右对齐。

当时间或日期超出字段宽度时,会从末尾截去字符,直到能够容纳。这可能出现在不常见的情况下,例如年份大于 9999(会多出一个数字),或对 MTIME、TIME、DTIME 上的负值(会添加一个前导负号)。

系统缺失值输出为字段右端的一个句点。

基于 GNU PSPP 2.0.1 手册与入门教程整理