如何在MacOS上的shell脚本中将DATE转换为UNIX TIMESTAMP

时间:2010-09-28 23:26:59

标签: linux macos date shell

在Linux上,您可以将“2010-10-02”之类的日期转换为shell脚本中的unix时间戳

date -d "2010-10-02" "+%s"

由于Mac OS的日期没有等效的 -d 。你如何在shell脚本中将日期转换为unix时间戳。

8 个答案:

答案 0 :(得分:127)

date +%s

这对OS X Lion来说很好。

答案 1 :(得分:29)

OSX上的

man date有这个例子

date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

我认为你想做什么。

您可以将其用于特定日期

date -j -f "%a %b %d %T %Z %Y" "Tue Sep 28 19:35:15 EDT 2010" "+%s"

或使用您想要的任何格式。

答案 2 :(得分:15)

date -j -f "%Y-%m-%d" "2010-10-02" "+%s"

答案 3 :(得分:2)

我在Mac OSX上使用了以下内容。

currDate=`date +%Y%m%d`
epochDate=$(date -j -f "%Y%m%d" "${currDate}" "+%s")

答案 4 :(得分:0)

Alternatively you can install GNU date like so:

  1. install Homebrew: https://brew.sh/
  2. brew install coreutils
  3. add to your bash_profile: alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

The Mac is "different" because OSX is based on BSD. BSD utilities tend to be conservatively updated, while GNU tools have more enhancements.

Really, if you spend most of your time in Linux, but have a Mac desktop, you probably want to make the Mac work like Linux. Also see: Docker. There's no sense in trying to remember two different sets of options.

答案 5 :(得分:0)

date -j -f "%Y-%m-%d %H:%M:%S" "2020-04-07 00:00:00" "+%s"

在没有%H:%M:%S00:00:00的情况下,它将打印动态秒数。

答案 6 :(得分:0)

我编写了一组脚本,为 date 的 BSD 和 GNU 版本提供统一接口。

Follow 命令将输出日期 2010-10-02 的纪元秒数,它适用于 date 的 BSD 和 GNU 版本。

$ xsh /date/convert "2010-10-02" "+%s"
1286020263

它与 date 的 GNU 版本的命令等效:

date -d "2010-10-02" "+%s"

以及带有 date 的 BSD 版本的命令:

date -j -f "%F" 2010-10-02 "+%s"

可以在以下位置找到脚本:

它是名为 xsh-lib/core 的库的一部分。要使用它们,您需要存储库 xshxsh-lib/core,我将它们列在下面:

答案 7 :(得分:0)

要将 UTC 中的日期转换为 Unix 时间戳:

date -ju -f "%F %T" "2021-03-08 14:56:21" "+%s"