6.7.4.5 时间与日期格式
在 PSPP 中,时间 是一个间隔。时间格式在易于理解的时间间隔描述与 PSPP 对时间间隔的内部表示(即间隔所含的秒数)之间进行转换。PSPP 有三种时间格式:
| 时间格式 | 模板 | 示例 |
|---|---|---|
| MTIME | MM:SS.ss | 91:17.01 |
| TIME | hh:MM:SS.ss | 01:31:17.01 |
| DTIME | DD HH:MM:SS.ss | 00 04:31:17.01 |
日期 是过去或未来某一时刻。在内部,PSPP 将日期表示为自 纪元 (1582 年 10 月 14 日午夜)起经过的秒数。日期格式在可读日期与 PSPP 对日期和时间的数值表示之间进行转换。PSPP 有多种日期格式:
| 日期格式 | 模板 | 示例 |
|---|---|---|
| DATE | dd-mmm-yyyy | 01-OCT-1978 |
| ADATE | mm/dd/yyyy | 10/01/1978 |
| EDATE | dd.mm.yyyy | 01.10.1978 |
| JDATE | yyyyjjj | 1978274 |
| SDATE | yyyy/mm/dd | 1978/10/01 |
| QYR | q Q yyyy | 3 Q 1978 |
| MOYR | mmm yyyy | OCT 1978 |
| WKYR | ww WK yyyy | 40 WK 1978 |
| DATETIME | dd-mmm-yyyy HH:MM:SS.ss | 01-OCT-1978 04:31:17.01 |
| YMDHMS | yyyy-mm-dd HH:MM:SS.ss | 1978-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 列。每种时间与日期格式的最小输入与输出宽度如下所示:
| 格式 | 最小输入宽度 | 最小输出宽度 | 选项 |
|---|---|---|---|
| DATE | 8 | 9 | 4 位年份 |
| ADATE | 8 | 8 | 4 位年份 |
| EDATE | 8 | 8 | 4 位年份 |
| JDATE | 5 | 5 | 4 位年份 |
| SDATE | 8 | 8 | 4 位年份 |
| QYR | 4 | 6 | 4 位年份 |
| MOYR | 6 | 6 | 4 位年份 |
| WKYR | 6 | 8 | 4 位年份 |
| DATETIME | 17 | 17 | 秒 |
| YMDHMS | 12 | 16 | 秒 |
| MTIME | 4 | 5 | |
| TIME | 5 | 5 | 秒 |
| DTIME | 8 | 8 | 秒 |
表中,“选项”描述了增大输出宽度所能启用的事项:
4 位年份
比最小宽度宽 2 列的字段会包含 4 位年份。(DATETIME 和 YMDHMS 格式始终包含 4 位年份。)
秒
比最小宽度宽 3 列的字段会同时包含秒与分钟。比最小宽度宽 5 列或更宽的字段,还可以包含小数点与小数秒(但不超过格式小数位数所允许的数量)。
对于时间与日期格式,默认输出格式与输入格式相同,但如有必要,PSPP 会将字段宽度增大到输出所允许的最小值。
窄于字段宽度的时间或日期在字段内右对齐。
当时间或日期超出字段宽度时,会从末尾截去字符,直到能够容纳。这可能出现在不常见的情况下,例如年份大于 9999(会多出一个数字),或对 MTIME、TIME、DTIME 上的负值(会添加一个前导负号)。
系统缺失值输出为字段右端的一个句点。