Wie kann ich das ändern das format von Datum von der Befehlszeile aus?
-
07-07-2019 - |
Frage
Was ist der Schnellste Weg, um zu konvertieren ein Datum in einem format, sagen
2008-06-01
um ein Datum in einem anderen format, sagen
Sonne-1. Juni 2008
Der wichtige Teil ist wirklich der 'Sun', weil je nach der dayname, vielleicht brauche ich mal andere Dinge um sich herum - in eine nicht-deterministische Weise.Ich verwende GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0).
[Hintergrund:Der Grund, dass ich möchte es von der Befehlszeile aus, dass das, was ich wirklich will, ist zu schreiben, es in ein TextMate-Befehl...Es ist eine lästige Aufgabe, die ich zu tun habe die ganze Zeit in textMate.]
Lösung
$ date -d '2005-06-30' +'%a %F'
Thu 2005-06-30
Siehe man date
für andere Formatoptionen.
Diese Option ist verfügbar unter Linux, aber nicht auf Darwin. In Darwin, können Sie die folgende Syntax verwenden statt:
date -j -f "%Y-%m-%d" 2006-06-30 +"%a %F"
Das -f Argument gibt das Eingabeformat und das + Argument gibt das Ausgabeformat.
Wie unten von einem anderen Poster erwähnt, würden Sie klug sein% zu verwenden u (numerischer Tag der Woche), anstatt% eines Lokalisierungsproblem zu vermeiden.
Andere Tipps
Lesen Sie die date (1) manpage enthüllt hätte:
-j Do not try to set the date. This allows you to use the -f flag in addition to the + option to convert one date format to another.
Vielen Dank für die SGM. Also nur so kann ich wieder darauf verweisen -
date -j -f "%Y-%m-%d" "2008-01-03" +"%a%e %b %Y"
^ ^ ^
parse using | output using
this format | this format
|
date expressed in
parsing format
Thu 3 Jan 2008
Danke.
date -d yyyy-mm-dd
Wenn Sie mehr Kontrolle über die Formatierung möchten, können Sie diese auch wie folgt hinzu:
date -d yyyy-mm-dd +%a
bekommen nur die Sonne Teil, das Sie sagen, Sie wollen.
date -d ...
nicht scheinen, es zu schneiden, wie bekomme ich einen Syntax-Fehler:
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Ich verwende GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0), und wie weit, wie es dem Mann geht, date-d ist nur für
-d dst Set the kernel's value for daylight saving time. If dst is non-
zero, future calls to gettimeofday(2) will return a non-zero for
tz_dsttime.
Wenn Sie gerade suchen den Tag der Woche zu bekommen, versuchen Sie nicht, Strings zu entsprechen. Das bricht, wenn die locale ändert. Das %u
Format geben Sie die Tageszahl:
$ date -j -f "%Y-%m-%d" "2008-01-03" +"%u"
4
Und in der Tat, das war ein Donnerstag. Man könnte diese Zahl auf Index in ein Array verwenden Sie in Ihrem Programm haben, oder verwenden Sie einfach die Nummer selbst.
Sehen Sie Datum und strftime Mann Seiten für weitere Details. Das Datum manpage auf O X ist die falsche, obwohl, da es diese Optionen nicht auflisten, die funktionieren.