首页 > 解决方案 > 在 OSX 上将字符串转换为 bash 日期并检查是否超过 90 天

问题描述

我正在尝试将以下“时间戳”字符串转换为 OSX 上 bash 中的日期。我希望能够计算日期是否超过 90 天。

<------- hg-test-onprem-connector ------>>>
[
 {
"digest": "sha256:6607adac160984fe08f4578b0894c0640647e28cfb712564621667ee9812938c",
"tags": [],
"timestamp": "2019-02-28T14:49:28.4658512Z"

到目前为止,我已经找到了如何在 bash (osx) 中转换日期,但不确定如何将此特定日期转换为该格式。

CURR_DATE=$(date +”%d%m%Y”)
echo ‘Current date: ‘$CURR_DATE

# Find the date 90 days ago – For OSX bash:
DELETION_DATE=$(date -v-90d +”%d%m%Y”)
echo ‘Previous date: ‘$DELETION_DATE

任何建议都会有很大帮助。

标签: arraysstringbashmacosdate

解决方案


我认为第一个问题是 OSX 日期命令不支持小数,因此需要先修复它,然后才能将其转换为日期。

这是我的解决方案:

FIXED_TIMESTAMP=$(echo "2019-02-28T14:49:28.4658512Z" | sed s/\\.[0-9]*//g)
TIMESTAMP_AS_DATE=$(date -jf "%Y-%m-%dT%H:%M:%SZ" $FIXED_TIMESTAMP +%d%m%Y)
echo ‘Timestamp date: ‘$TIMESTAMP_AS_DATE

上述代码的第一行使用 sed 去除第二个组件的小数部分。然后,在第二行,我们使用 ISO8601 兼容格式字符串将其转换为您当前用于其他变量的格式,以读取固定时间戳。

这应该会返回一个与您拥有的其他数值一致的数值。


推荐阅读