Datums Format herausfinden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
buhtz
Beiträge: 142
Registriert: 04.12.2015 17:54:49

Datums Format herausfinden

Beitrag von buhtz » 01.07.2018 13:50:47

Wie finde ich heraus welches Datumsformat das ist?

Code: Alles auswählen

Di, 12 Jun 2018 17:49:24
Als Mensch kann ich das natürlich lesen. Zur Laufzeit, kenn ich aber das Format nicht und kann daher auch nicht die bekannten strftime() Platzhalter (%Y) nutzen,

Benutzeravatar
TRex
Moderator
Beiträge: 6052
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Datums Format herausfinden

Beitrag von TRex » 01.07.2018 14:11:49

Wenn sich das Format zur Laufzeit ändert, bleibt dir nur eine (sprachabhängige) Bibliothek, die das (fehlerbehaftet) automatisch ermittelt.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!

Benutzeravatar
Meillo
Moderator
Beiträge: 5051
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Datums Format herausfinden

Beitrag von Meillo » 01.07.2018 18:50:26

buhtz hat geschrieben: ↑ zum Beitrag ↑
01.07.2018 13:50:47
Wie finde ich heraus welches Datumsformat das ist?

Code: Alles auswählen

Di, 12 Jun 2018 17:49:24
Wie meinst du das? Willst du wissen, wie dieses Datumsformat heisst. Die Antwort darauf ist das RFC 822 Datumsformat, allerdings ohne Zeitzone und auf Deutsch. Oder willst du ein beliebiges Datumsformat erkennen koennen.
Als Mensch kann ich das natürlich lesen. Zur Laufzeit, kenn ich aber das Format nicht und kann daher auch nicht die bekannten strftime() Platzhalter (%Y) nutzen,
Das hoert sich eher nach zweiterem an: Du willst ein beliebiges Format erkennen koennen, ohne zu wissen, welches es ist. Die kurze Antwort darauf ist, dass das unmoeglich ist. Beweis: Welches Datum ist ``01/02/03''?

(Warum eigentlich strftime(3)? Meinst du nicht eher strptime(3)? Also parsen statt formatieren?)


date(1) kann mit `-d' eine Reihe gaengiger Datumsformate erkennen. Den Weg wuerde ich gehen, evtl. mit Vorbearbeitung der Daten auf gut Glueck.

Leider ist's bei meiner Implementierung (Coreutils 8.13) mit der Internationalisierung wenig weit her. Das erkennt er naemlich nicht, obwohl er sollte:

Code: Alles auswählen

$ LC_TIME=de_DE date -d 'Di, 12 Jun 2018 17:49:24'
date: invalid date `Di, 12 Jun 2018 17:49:24'
Wenn ich den Wochentag englisch schreibe klappt's:

Code: Alles auswählen

$ date  -d 'Tue, 12 Jun 2018 17:49:24'   
Tue Jun 12 17:49:24 CEST 2018
Vielleicht ist das in einer neueren Version schon gefixt.



Btw: Ich antworte hier auch deshalb, weil Datumsformate eines meiner Lieblingsthemen sind. Mit ISO 8601/RFC 3339 waere das nicht passt! ;-)
Use ed(1) once in a while!

halo44
Beiträge: 369
Registriert: 12.05.2015 15:19:13

Re: Datums Format herausfinden

Beitrag von halo44 » 01.07.2018 19:07:17

Wolltest Du das erfahren?

Code: Alles auswählen

echo "`date '+%a, %d %b %Y %T'`"
Gruss H.
Debian Stretch-64 KDE (Desktop)
Debian Stretch-64 KDE (Notebook)
Kanotix64 (auf beiden Rechnern)
Debian Stretch-64 armel (NAS)

buhtz
Beiträge: 142
Registriert: 04.12.2015 17:54:49

Re: Datums Format herausfinden

Beitrag von buhtz » 08.07.2018 22:37:09

Meillo hat geschrieben: ↑ zum Beitrag ↑
01.07.2018 18:50:26
Die Antwort darauf ist das RFC 822 Datumsformat, allerdings ohne Zeitzone und auf Deutsch.
Streng genommen, ist es also ein nicht standardiserites Format, da es ein bisschen wie RFC 822 aussieht, aber nicht ganz diesem Standard entspricht? Der Fehler ist also auf Seiten des Erzeugers (RSS-Feed von Digitalcourage) - den ich bereits benachrichtigt habe.

Antworten