【问题标题】:The date command do not convert to time stamp the format returned by date commanddate 命令不转换为 date 命令返回的格式的时间戳
【发布时间】:2014-07-15 11:23:08
【问题描述】:

linux的date命令返回如下日期格式

root@root:~# date
Sat Jun 14 06:36:42 CEST 2014

如果我添加 +%s 可以打印当前日期时间戳

root@root:~# date +%s
1402720624

现在如果我想打印 date 命令返回的日期的时间戳,我得到以下错误

root@Inteno:~# date -d"Sat Jun 14 06:36:42 CEST 2014" +%s
date: invalid date 'Sat Jun 14 06:36:42 CEST 2014'

如何使日期返回日期格式Sat Jun 14 06:36:42 CEST 2014 的时间戳?

注意:我使用的是 BusyBox v1.19.4 中的日期

【问题讨论】:

  • 为我工作。版本 8.4。
  • 也为我工作。日期版本:日期(GNU coreutils)8.13
  • 可能是您正在运行带有内置日期的busybox,而不是像GNU date 这样的完整日期吗?从busybox我得到同样的错误
  • 我正在使用 BusyBox v1.19.4 中的日期
  • 我可以在具有德语语言环境的 Ubuntu14.04 上重现该问题。你可以试试LC_TIME=C date -d"$(LC_TIME=C date)" +%s 吗?有用吗?

标签: linux bash shell date busybox


【解决方案1】:

不幸的是,busybox 的日期有限制,但如果你可以考虑使用时间戳,你可以这样做:

TS=$(date '+%s')
date -d "@${TS}"

如果 CEST 是您当前的当地时间,您可以这样做:'

DATE=$(date)
date -d "$(echo "$DATE" | cut -d ' '  -f 2,3,4,6)" '+%s'

删除时区仍然适用。

【讨论】:

  • 请查看我的comment。看起来是语言环境的问题。
  • @hek2mgl 它适用于busybox的日期吗? busybox date ...
  • 这仍然是开放的.. 但我不希望busybox日期与常规 GNU日期有很大不同
  • 我有busybox的日期,它不接受Sat Jun 14 06:36:42 CEST 2014这样的格式。
  • 是的,这就是为什么我建议使用LC_TIME=C date 来生成初始日期。然后再次使用相同的环境变量来解析它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2016-04-03
  • 1970-01-01
  • 2011-01-29
相关资源
最近更新 更多