27、AWK 内置的时间函数及时间格式化符

为了方便处理时间及转换时间,AWK 内置了 3 个和时间有关的函数。虽然只有三个,但是功能还是很强大的。

返回当前时间戳 systime()

当前时间戳 是指格林威治时间 1970-01-01 00:00:00 UTC 以来经过的 秒数

该函数的原型如下

systime()

范例

输出当前时间戳

[www.ddkk.com]$ awk 'BEGIN {
   print "当前时间的时间戳为:" systime()
}'

运行上面的 awk 指令,输出结果如下

当前时间的时间戳为:1559223135

时间字符串转时间戳 mktime(datespec)

mktime() 函数用于将指定格式的 时间字符串 转换为 时间戳

该函数的原型如下

mktime(datespec)

参数说明

参数 说明
datespec 指定格式的 时间字符串,符合以下格式 YYYY MM DD HH MM SS

范例

将当前时间转换为时间戳格式

[www.ddkk.com]$ awk 'BEGIN {
   print "当前时间的时间戳为:" mktime("2019 05 30 21 27 10")
}'

运行上面的 awk 指令,输出结果如下

当前时间的时间戳为:1559222830

格式化时间函数 strftime([format [, timestamp[, utc-flag]]])

strftime() 函数用于将一个 时间戳 格式的时间根据指定的 时间格式化符 转成字符串形式表示

该函数的原型如下

strftime([format [, timestamp[, utc-flag]]])

参数说明

参数 说明
format 时间格式化符
timestamp 时间戳
utc-flag utc 中的一些额外选项

范例

将当前时间格式化为 12/14/2014 22:08:42 形式

[www.ddkk.com]$ awk 'BEGIN {
   print strftime("当前时间是:%m/%d/%Y %H:%M:%S", systime())
}'

运行上面的 awk 指令,输出结果如下

当前时间是:05/30/2019 21:22:18

时间格式化符

下面的格式化符我们以今天时间 2019年05月30日 星期四 21时08分37秒 +0800 为例**

格式符 说明
%a 本地化的星期几,例如 星期四
%A 本地化的星期几缩写,例如
%b 本地化的月份所写,例如 5月
%B 本地化的月份,例如 五月
%c C 语言 中的 %A %B %d %T %Y 的格式,例如 2019年05月30日 星期四 21时08分37秒
%C 本年度的世纪部分。也就是四位数字年份的前两位,例如 2019 年中的 20
%d 当月中的第几天,范围为 01-31,例如 30
%D 格式 %m/%d/%y 的简写,例如 05/30/19
%e 当月中的第几天,范围为 1-31,如果小于 10 则在前面补空格,如 1 补全为 1
%F ISO 8601 日期格式中的 %Y-%m-%d 的别名
%g ISO 8601 日期格式中的周数除以 100 的值,范围 00-99
例如 1993 年 1 月 1 日1992 年的第 53 周。
大家可以翻翻日历,因为 1993 年 1 月 1 日和 1992 年的最后一天在同一周内。
%G IOS 周数制下的完整年费,类似于四位数年份,例如 2019
%h 格式 %b 的别名
%H 24小时制的当前时间的时,范围为 00–23
%I 12小时制的当前时间的时,范围为 01–12
%j 一年中的第几天,范围为 001–366
%m 当前时间的月,范围为 01–12
%M 当前时间的分,范围为 00–59
%n 换行符 \n
%p 本地化的 12 小时制时间格式中的 AMPM,也就是本地化的上午或下午表示形式
%r 本地化的 12 小时制时间格式,类似于 C 语言 中的 %I:%M:%S %p
%R 格式 %H:%M 的缩写
%S 当前时间的秒,范围为 00-6060 主要考虑闰秒
%t 制表符 \t
%T 格式 %H:%M:%S 的缩写
%u 一周中的第几天,也就是星期几,范围为 1–7每周以星期一开始
%U 一年中的第几周,范围为 00-53第一周从第一个星期日开始
%V 一年中的第几周,范围为 01-53第一周从第一个星期一开始
%w 一周中的第几天,也就是星期几,范围为 0–6每周以星期日开始
%W 一年中的第几周,范围为 00-53第一周从第一个星期一开始
%x 本地化的完整日期表示,类似于 %A %B %d %Y,例如 星期四 五月 30 2019
%X 本地化的完整时间表示,类似于 C 语言 中的 %T ,例如 07:06:05
%y 两位十进制年份,即取年份的后两位,范围为 00-99,比如 2019 则返回 19
%Y 完整的 4 位十进制年份,例如 2019
%z +HHMM 格式的时区偏移。是 RFC 822RFC 1036 日期格式中的组成部分。
%Z 时区名称或时区名称缩写。如果没有时区则返回空字符串 ''