【问题标题】:Convert DateTime to timestamp in bash将 DateTime 转换为 bash 中的时间戳
【发布时间】:2019-02-13 12:46:01
【问题描述】:

我有一个 DateTime 2019-02-03T10:17:24Z 要转换为时间戳。 我可以使用将常规日期时间转换为时间戳 current="date +%s"

操作系统:MAC Bash:GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin17)

我尝试使用不同的格式,但它抛出了非法的日期格式。

created="2019-02-03T10:17:24Z"
createdT=`date -j -f +%Y-%m-%dT%H:%M:%S.%3NZ $created`

【问题讨论】:

  • createdT="$(date -d "${created}" +%s)"?
  • 看起来您使用的是 BSD 日期而不是 GNU 日期。您能否确认您的操作系统和 bash 版本?
  • 操作系统:macOS 版本:10.13.3 (17D102)

标签: bash


【解决方案1】:

看起来你有两个问题。

  1. 用法。 -f 选项在格式开头没有加号(“+”)。
  2. 您指定的格式似乎需要 GNU 日期提供的纳秒值,但该值不在您的输入数据中。

注意:

$ created="2019-02-03T10:17:24Z"
$ date -j -f '%Y-%m-%dT%H:%M:%SZ' "$created" '+%s'
1549207044

请注意,使用引号是一个非常好的主意 - 可以使用单引号,需要扩展变量时使用双引号。

【讨论】:

  • 当我在 Ubuntu:16.04 容器中执行相同的命令时.. 它会引发以下错误.... date: invalid option -- 'j' 。 ubuntu中的等效命令是什么? @ghoti
  • 在 Ubuntu 中可以使用 createdT=$(date -d "${created}" '+%s')
猜你喜欢
  • 2019-12-24
  • 2011-12-18
  • 2022-01-24
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2014-10-26
  • 2018-11-26
相关资源
最近更新 更多