date -j -f "%Y-%m-%d %H:%M:%S" "2020-04-07 00:00:00" "+%s"
It will print the dynamic seconds when without %H:%M:%S
and 00:00:00
.
Alternatively you can install GNU date like so:
brew install coreutils
alias date="/usr/local/bin/gdate"
date +%s
1547838127Comments saying Mac has to be "different" simply reveal the commenter is ignorant of the history of UNIX. macOS is based on BSD UNIX, which is way older than Linux. Linux essentially was a copy of other UNIX systems, and Linux decided to be "different" by adopting GNU tools instead of BSD tools. GNU tools are more user friendly, but they're not usually found on any *BSD system (just the way it is).
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. There's no sense in trying to remember two different sets of options, or scripting for the mac's BSD version of Bash, unless you are writing a utility that you want to run on both BSD and GNU/Linux shells.
date +%s
This works fine for me on OS X Lion.
I wrote a set of scripts that provides a uniform interface for both BSD and GNU version of date
.
Follow command will output the Epoch seconds for the date 2010-10-02
, and it works with both BSD and GNU version of date
.
$ xsh /date/convert "2010-10-02" "+%s"
1286020263
It's an equivalent of the command with GNU version of date
:
date -d "2010-10-02" "+%s"
and also the command with BSD version of date
:
date -j -f "%F" 2010-10-02 "+%s"
The scripts can be found at:
It's a part of a library called xsh-lib/core
. To use them you need both repos xsh
and xsh-lib/core
, I list them below:
I used the following on Mac OSX.
currDate=`date +%Y%m%d`
epochDate=$(date -j -f "%Y%m%d" "${currDate}" "+%s")
date -j -f "%Y-%m-%d" "2010-10-02" "+%s"
Source: Stackoverflow.com