时间函数(Time Functions)
AWK具有以下内置时间功能 -
systime
此函数返回当天的当前时间,作为自Epoch(1970IX-01 00:00:00 UTC在POSIX系统上)以来的秒数。
例子 (Example)
[jerry]$ awk 'BEGIN {
print "Number of seconds since the Epoch = " systime()
}'
执行此代码时,您将获得以下结果 -
输出 (Output)
Number of seconds since the Epoch = 1418574432
mktime(datespec)
此函数将datespec字符串转换为systime()返回的相同格式的时间戳。 datespec是YYYY MM DD HH MM SS形式的字符串。
例子 (Example)
[jerry]$ awk 'BEGIN {
print "Number of seconds since the Epoch = " mktime("2014 12 14 30 20 10")
}'
执行此代码时,您将获得以下结果 -
输出 (Output)
Number of seconds since the Epoch = 1418604610
strftime([format [, timestamp[, utc-flag]]])
此函数根据格式的规范格式化时间戳。
例子 (Example)
[jerry]$ awk 'BEGIN {
print strftime("Time = %m/%d/%Y %H:%M:%S", systime())
}'
执行此代码时,您将获得以下结果 -
输出 (Output)
Time = 12/14/2014 22:08:42
AWK支持以下时间格式 -
S.No. | 日期格式规范和描述 |
---|---|
1 | %a 语言环境的缩写为工作日名称。 |
2 | %A 语言环境的完整工作日名称。 |
3 | %b 区域设置的缩写月份名称。 |
4 | %B 区域设置的完整月份名称。 |
5 | %c 区域设置的适当日期和时间表示。 (这是C语言环境中%A%B%d%T%Y。) |
6 | %C 本年度的世纪部分。 这是除以100的年份并截断为下一个较低的整数。 |
7 | %d 以十进制数表示的月份日期(01-31)。 |
8 | %D 相当于指定%m /%d /%y。 |
9 | %e 如果它只有一位数,则填充空格。 |
10 | %F 相当于指定%Y-%m-%d。 这是ISO 8601日期格式。 |
11 | %g 年份以ISO 8601周数为模100,为十进制数(00-99)。 例如,1993年1月1日是在1992年的第53周。因此,其ISO 8601周数的年份是1992年,即使它的年份是1993年。同样,1973年12月31日是在1974年的第1周。因此,它的ISO周数是1974年,尽管它的年份是1973年。 |
12 | %G ISO周数的全年,以十进制数表示。 |
13 | %h 相当于%b。 |
14 | %H 小时(24小时制)作为十进制数字(00-23)。 |
15 | %I 小时(12小时制)作为十进制数字(01-12)。 |
16 | %j 一年中的某一天作为十进制数字(001-366)。 |
17 | %m 月份为十进制数字(01-12)。 |
18 | %M 分钟作为十进制数字(00-59)。 |
19 | %n 换行符(ASCII LF)。 |
20 | %p 该区域设置相当于与12小时时钟相关的AM/PM指定。 |
21 | %r 该区域设置的12小时时钟。 (这是%I:%M:C语言环境中的%S%p。) |
22 | %R 相当于指定%H:%M。 |
23 | %S 第二个作为十进制数字(00-60)。 |
24 | %t 一个TAB角色。 |
25 | %T 相当于指定%H:%M:%S。 |
26 | %u 工作日为十进制数(1-7)。 星期一是第一天。 |
27 | %U 一年中的周数(第一个星期日作为第一周的第一天)作为十进制数(00-53)。 |
28 | %V 一年中的周数(第一个星期一作为第一周的第一天)作为十进制数(01-53)。 |
29 | %w 工作日为十进制数(0-6)。 星期天是零日。 |
30 | %W 一年中的周数(第一个星期一作为第一周的第一天)作为十进制数(00-53)。 |
31 | %x 区域设置的适当日期表示。 (这是C语言环境中的%A%B%d%Y。)。 |
32 | %X 区域设置的适当时间表示。 (这是C语言环境中的%T。)。 |
33 | %y 年份为100的十进制数(00-99)。 |
34 | %Y 全年作为十进制数(例如2011)。 |
35 | %z 以+ HHMM格式的时区偏移(例如,生成RFC 822/RFC 1036日期标头所需的格式)。 |
36 | %Z 时区名称或缩写; 如果没有可确定的时区,则没有字符。 |