AWK 内置的时间函数及时间格式化符
为了方便处理时间及转换时间,AWK 内置了 3 个和时间有关的函数。虽然只有三个,但是功能还是很强大的。
返回当前时间戳 systime()
当前时间戳 是指格林威治时间 1970-01-01 00:00:00 UTC 以来经过的 秒数。
该函数的原型如下
systime()
范例
输出当前时间戳
[www.twle.cn]$ awk 'BEGIN { print "当前时间的时间戳为:" systime() }'
运行上面的 awk 指令,输出结果如下
当前时间的时间戳为:1559223135
时间字符串转时间戳 mktime(datespec)
mktime() 函数用于将指定格式的 时间字符串 转换为 时间戳。
该函数的原型如下
mktime(datespec)
参数说明
| 参数 | 说明 | 
|---|---|
| datespec | 指定格式的 时间字符串,符合以下格式 YYYY MM DD HH MM SS | 
范例
将当前时间转换为时间戳格式
[www.twle.cn]$ 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.twle.cn]$ 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 小时制时间格式中的 AM或PM,也就是本地化的上午或下午表示形式 | 
| %r | 本地化的 12 小时制时间格式,类似于 C 语言 中的 %I:%M:%S %p | 
| %R | 格式 %H:%M的缩写 | 
| %S | 当前时间的秒,范围为 00-60。60主要考虑闰秒 | 
| %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 822或RFC 1036日期格式中的组成部分。 | 
| %Z | 时区名称或时区名称缩写。如果没有时区则返回空字符串 '' |