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


76

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

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

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

Answers:


35

man date 在OSX上有这个例子

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"

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


在使用bash shell的OSX终端上,我无法使用上述命令,例如:currDate = date +%Y%m%ddate -j -f“%a%b%d%T%T%Z%Y”“ $ {currDate}”“ +%s”
学习者

1
@Jagdeep仅当指定的时区为系统时区时,才在OSX上起作用。我在PDT上面的命令中是这样的,对我来说工作EDT有所改变PDT
linuxeasy

136
date +%s

这对我在OS X Lion上工作正常。


9
也可以在Linux中使用(Ubuntu 10.04)
Irfan

3
OP要求将特定的给定日期转换为时间戳。date +%s只会使用当前日期。
luator

17

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


3

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

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

2

或者,您可以像这样安装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一样工作。除非记住要编写要同时在BSD和GNU / Linux Shell上运行的实用程序,否则试图记住两组不同的选项或者为Mac的BSD版本的Bash编写脚本没有任何意义。


0

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

不使用%H:%M:%S和时,它将打印动态秒数00:00:00

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.