繁体   English   中英

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

[英]How to convert DATE to UNIX TIMESTAMP in shell script on MacOS

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

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

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

date +%s

这在 OS X Lion 上对我来说很好用。

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"

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

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

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

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

或者,您可以像这样安装 GNU date:

  1. 安装 Homebrew: https : //brew.sh/
  2. brew install coreutils
  3. 添加到您的 bash_profile: alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

说 Mac 必须“与众不同”的评论只是表明评论者对 UNIX 的历史一无所知。 macOS 基于 BSD UNIX,它比 Linux 古老得多。 Linux 本质上是其他 UNIX 系统的副本,Linux 决定通过采用 GNU 工具而不是 BSD 工具来“与众不同”。 GNU 工具对用户更友好,但它们通常不会在任何 *BSD 系统上找到(只是它的方式)。

真的,如果您将大部分时间都花在 Linux 上,但拥有 Mac 桌面,那么您可能想让 Mac 像 Linux 一样工作。 尝试记住两组不同的选项或为 mac 的 BSD 版本的 Bash 编写脚本是没有意义的,除非您正在编写要在 BSD 和 GNU/Linux shell 上运行的实用程序。

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

当没有%H:%M:%S00:00:00时,它将打印动态00:00:00

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

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

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

它相当于带有 GNU 版本date的命令:

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM