gpt4 book ai didi

date - 如何将 SSL 证书的长日期转换为短日期 | Unix KSH

转载 作者:行者123 更新时间:2023-12-03 22:23:22 24 4
gpt4 key购买 nike

我想知道是否可以将日期转换为显示 Oct 31 00:00:00 2013 GMT10-31-2013 .

我得到的日期如下:

NotBeforeDate=$(openssl x509 -noout -in ${CERTIFICATE} -dates | grep "notBefore")

我得到的日期是 Oct 31 00:00:00 2013 GMT我想把它转换成 10-31-2013 .

有什么命令可以做到这一点吗?还是我必须手动完成所有操作?

如果是这样,最好的方法是创建我自己的函数并将长日期作为参数发送并返回一个短日期。

最佳答案

openssl 命令将使 NotBeforeDate变量具有值(至少在我使用的 bash 版本中):

notBefore=Oct 31 00:00:00 2013 GMT

所以,首先我们需要删除 notBefore=部分:
dateStr=${NotBeforeDate/notBefore=/}

然后你可以使用 date命令:
date --date="$dateStr" --utc +"%m-%d-%Y"
--date选项告诉命令使用 dateStr值(value), --utc告诉日期是 UTC(由 GMT 部分指定)和 +"%m-%d-%Y"将日期格式化为所需的格式。

输出是:

10-31-2013



PS:选项可能因您的 Linux 版本而异。
您可以使用 date --help 检查所有可用的或 man date .

例如,多头期权 --date--utc可能不可用,但等效的短版本可能是(只是一个例子,我不确定 date 命令在不同的 unix 版本之间是否有这样的变化):
date -d "$dateStr" -u +"%m-%d-%Y"

不幸的是,我没有您使用的完全相同的环境(unix 中的 ksh),但这应该可行。
-d选项似乎是特定于 GNU 的,因此如果它不可用,您将不得不手动解析字符串。假设 dateStr具有值 Oct 31 00:00:00 2013 GMT ,你可以运行:
printf '%s\n' "$dateStr" | awk '{ printf "%02d-%02d-%04d\n", (index("JanFebMarAprMayJunJulAugSepOctNovDec",$1)+2)/3, $2, $4}'

输出是:

10-31-2013

关于date - 如何将 SSL 证书的长日期转换为短日期 | Unix KSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com