将 LDAP 时间戳转换为 Linux shell 中的不同格式
Convert LDAP timestamp to different format in Linux shell
我在 Linux 中使用 ldapsearch
命令获取有关用户的 LDAP 信息。最后一次身份验证时间以一种似乎称为“FileTime”的格式返回:
authTimestamp: 20200804154203Z
如何使用常见的 Linux shell 命令将此时间戳转换为更具可读性的日期,例如 2020-08-04 15:42
?我尝试使用 date
命令,但它无法识别给定的输入格式...
> date --date "20200415062835Z"
date: invalid date ‘20200415062835Z’
似乎date
只允许定义特殊的输出格式。换句话说,我可以以 LDAP returns (date +%Y%m%d%H%M%SZ
) 的格式打印当前日期,但我找不到告诉 date
它应该使用 +%Y%m%d%H%M%SZ
作为输入格式。
知道 LDAP authTimestamp
的确切输入格式(例如,20200415062835Z
)我想出了一个相当简单的函数来将其转换为 YYYY-MM-DD hh:mm:ss
格式,以防输入匹配给定的正则表达式。
function _convert_ldap_timestamp() {
ts=
if [[ "${ts}" =~ ^[0-9]{14}Z$ ]]; then
echo "${ts:0:4}-${ts:4:2}-${ts:6:2} ${ts:8:2}:${ts:10:2}:${ts:12:2}"
fi
}
执行示例:
> _convert_ldap_timestamp 20200804154203Z
2020-08-04 15:42:03
我在 Linux 中使用 ldapsearch
命令获取有关用户的 LDAP 信息。最后一次身份验证时间以一种似乎称为“FileTime”的格式返回:
authTimestamp: 20200804154203Z
如何使用常见的 Linux shell 命令将此时间戳转换为更具可读性的日期,例如 2020-08-04 15:42
?我尝试使用 date
命令,但它无法识别给定的输入格式...
> date --date "20200415062835Z"
date: invalid date ‘20200415062835Z’
似乎date
只允许定义特殊的输出格式。换句话说,我可以以 LDAP returns (date +%Y%m%d%H%M%SZ
) 的格式打印当前日期,但我找不到告诉 date
它应该使用 +%Y%m%d%H%M%SZ
作为输入格式。
知道 LDAP authTimestamp
的确切输入格式(例如,20200415062835Z
)我想出了一个相当简单的函数来将其转换为 YYYY-MM-DD hh:mm:ss
格式,以防输入匹配给定的正则表达式。
function _convert_ldap_timestamp() {
ts=
if [[ "${ts}" =~ ^[0-9]{14}Z$ ]]; then
echo "${ts:0:4}-${ts:4:2}-${ts:6:2} ${ts:8:2}:${ts:10:2}:${ts:12:2}"
fi
}
执行示例:
> _convert_ldap_timestamp 20200804154203Z
2020-08-04 15:42:03