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 | 时区名称或时区名称缩写。如果没有时区则返回空字符串 '' |