bash - 在bash中将带有小时和分钟的日期字符串转换为秒
问题描述
我有一个包含 YYYYMMDDHHMM 格式的示例字符串。我正在尝试将其转换为秒但低于错误。
[vagrant@CentOS-Seven ~]$ export SAMPLE_DATE=201812051147
[vagrant@CentOS-Seven ~]$ echo $SAMPLE_DATE
201812051147
[vagrant@CentOS-Seven ~]$ date -d $SAMPLE_DATE
date: invalid date ‘201812051147’
[vagrant@CentOS-Seven ~]$
解决方案
根据这个答案 date
没有选项来指定输入格式。因此,您必须将输入转换为date
. 以下sed
命令中的命令转换 201812051147
为2018-12-05 11:47
.
要将日期转换为秒,请使用输出格式+%s
。
$ input=201812051147
$ date -d "$(sed -E 's/(....)(..)(..)(..)(..)/\1-\2-\3 \4:\5/' <<< "$input")" +%s
1544010420
请注意,输出取决于您的系统时区。TZ
您可以通过设置环境变量来更改时区。
顺便说一句:在这种情况下,您不必导出变量。此外,在 bash 中命名变量的约定是使用小写字母。按照惯例,只有特殊变量全部大写。使用全部大写的变量名可能会导致与这些变量的名称冲突。
推荐阅读
- jquery - Nodejs - 你能帮我使用会话更新购物车吗?
- flutter - 如何在颤动中制作可拖动的圆形谷歌地图
- r - 使用 If Else 语句在 R 中编写不同的 csv 文件
- java - 使用 JPAQueryFactory 解释
- c++ - 如何正确使用while循环?
- php - mysqli_sql_exception #1054 插入数据时 'where 子句' 中的未知列 'id'
- c# - Blazor - 如何将类列表绑定到输入
- spring-boot - 使用 mockito 模拟 Mono.just 时出现 NullPointerException
- python - 如何检查字母(值)是否在字典中?
- laravel - 错误 X-FRAME-OPTION 使用 Laravel Web App 从文件夹共享中嵌入 PDF 文件