为了方便处理时间及转换时间,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 小时制时间格式中的 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 | 时区名称或时区名称缩写。如果没有时区则返回空字符串 '' |