arrays - 在 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
任何建议都会有很大帮助。
解决方案
我认为第一个问题是 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 兼容格式字符串将其转换为您当前用于其他变量的格式,以读取固定时间戳。
这应该会返回一个与您拥有的其他数值一致的数值。
推荐阅读
- python - 分组数据框的滚动平均值
- regex - 正则表达式匹配,直到找到带有或不带有引号的冒号
- python - 遍历 2 个列表并构建相对字典的有效方法
- material-ui - 一个具有多种主题样式的组件(Material-UI v5)
- php - 使用 Laravel Passport 和 Tenancy for Laravel 的问题
- java - 一旦我修改 Java 代码,应用程序就会在 android studio 模拟器中崩溃
- c# - 如何在我的数据库中进行全文搜索
- python - 在 Python 中保存 CSV 时提供动态文件名
- java - 在使用 java 和 selenium 执行期间获得以下类型的异常
- apache-flink - 在类路径中找不到适合“org.apache.flink.table.factories.TableSourceFactory”的表工厂