So konvertieren Sie DATE in UNIX TIMESTAMP im Shell-Skript unter MacOS

76

Unter Linux können Sie ein Datum wie "2010-10-02" in einen Unix-Zeitstempel im Shell-Skript von konvertieren

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

Da Mac OS nicht das Äquivalent -d für Datum hat . Wie konvertieren Sie ein Datum in einen Unix-Zeitstempel in einem Shell-Skript?

David Young
quelle

Antworten:

35

man date unter OSX hat dieses Beispiel

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

Was ich denke macht was du willst.

Sie können dies für ein bestimmtes Datum verwenden

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

Oder verwenden Sie ein beliebiges Format.

Lou Franco
quelle
Unter OSX-Terminal mit Bash-Shell kann ich den obigen Befehl nicht verwenden. Beispiel: currDate = date +%Y%m%dDatum -j -f "% a% b% d% T% Z% Y" "$ {currDate}" "+% s"
Lernender
1
@Jagdeep Dies würde unter OSX nur funktionieren, wenn die angegebene Zeitzone der Zeitzone des Systems entspricht. Ich bin in PDTdem obigen Befehl so, dass das Ändern mit EDTmir PDTfunktioniert hat.
Linuxeasy
136
date +%s

Dies funktioniert gut für mich unter OS X Lion.

JRiggles
quelle
9
Funktioniert auch unter Linux (Ubuntu 10.04)
Irfan
3
OP fragt nach der Konvertierung eines bestimmten Datums in einen Zeitstempel. date +%sverwendet nur das aktuelle Datum.
Luator
17

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


quelle
3

Unter Mac OSX habe ich Folgendes verwendet.

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

Alternativ können Sie das GNU-Datum folgendermaßen installieren:

  1. Installieren Sie Homebrew: https://brew.sh/
  2. brew install coreutils
  3. füge deinem bash_profile hinzu: alias date="/usr/local/bin/gdate"
  4. date +%s 1547838127

Kommentare, die besagen, dass Mac "anders" sein muss, zeigen einfach, dass der Kommentator die Geschichte von UNIX nicht kennt. macOS basiert auf BSD UNIX, das viel älter als Linux ist. Linux war im Wesentlichen eine Kopie anderer UNIX-Systeme, und Linux entschied sich, "anders" zu sein, indem es GNU-Tools anstelle von BSD-Tools verwendete. GNU-Tools sind benutzerfreundlicher, werden jedoch normalerweise auf keinem * BSD-System gefunden (so wie es ist).

Wenn Sie die meiste Zeit unter Linux verbringen, aber einen Mac-Desktop haben, möchten Sie wahrscheinlich , dass der Mac wie Linux funktioniert. Es macht keinen Sinn, sich zwei verschiedene Optionen oder Skripte für die BSD-Version von Bash des Mac zu merken, es sei denn, Sie schreiben ein Dienstprogramm, das Sie sowohl auf BSD- als auch auf GNU / Linux-Shells ausführen möchten.

Scott Prive
quelle
0

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

Es werden die dynamischen Sekunden ohne %H:%M:%Sund gedruckt 00:00:00.

Vanyo
quelle