2016-08-18 4 views
1

ich einen Menschen lesbare Zeit alsKonvertieren von Menschen lesbare Zeit in EPOCH Shell-Skript mit

habe
08-18-2016 09:18:25 

ich es in Epoche Zeit mit Shell-Skript umgewandelt werden soll.

Ich habe versucht, mit date "+%s" aber ich erhalte den Fehler

Datum: ungültiges Datum `2016.08.18 09.32.42'

+0

Epoche Bedeutung Sekunden seit 1/1/1970? – fedorqui

+0

sollte ausgegeben werden '1471511905' –

+0

Kennen Sie über 'Datum -d' ... Ihr Datum ... "" +% s "'? – fedorqui

Antwort

2

Die kanonische Weise eine Datetime in konvertieren Epoche ist zu verwenden:

date "+%s"     # for this moment's date 
date -d" some date" "+%s"  # for a specific date 

jedoch in diesem Fall das Format nicht gültig ist:

$ date -d"08 18 2016 09:18:25" "+%s" 
date: invalid date ‘08 18 2016 09:18:25’ 

Sie müssen dann die Saite etwas massieren, bevor Sie sie an date -d übergeben.

Dieser wandelt die beiden ersten Räume in Schrägstriche:

$ sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25" 
08/18/2016 09:18:25 

das funktioniert so:

$ date -d"$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25")" "+%s" 
1471504705 

Oder Verwendung von Variablen:

$ nice_date=$(sed 's# #/#;s# #/#' <<< "08 18 2016 09:18:25") 
$ date -d"$nice_date" "+%s" 
1471504705 
+1

Danke für die Erklärung fedorqui. Aber 1471511905 ist die Epoche Zeit für 08 18 2016 09:18:25, nicht 1471504705. –

+0

@Mohitrane gut, muss dies zu Ihrem Standort gehören. Führen Sie es einfach in Ihrer Maschine aus und sehen Sie, was die Ausgabe ist. – fedorqui

+0

@MohitRane, also hat mein Ansatz für Sie funktioniert? – fedorqui

0

Danke für die Erklärung fedorqui. Aber 1471511905 ist die Epoche Zeit für 08 18 2016 09.18.25, nicht 1471504705. - Mohit Rane

date -u … wird Coordinated Universal Time drucken.

Verwandte Themen