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?

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.


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.


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"


3

Unter Mac OSX habe ich Folgendes verwendet.

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

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.