Een datum uit een string parsen

Bash:
Een datum uit een string parsen

Hoe te:

Gebruik maken van date met +%Y-%m-%d geeft ons een geformatteerde uitvoer:

date_str="Jan 01 2023"
formatted_date=$(date -d "$date_str" '+%Y-%m-%d')
echo $formatted_date
2023-01-01

date -d laat ons onze string ontleden, terwijl +%Y-%m-%d het uitvoerformaat specificeert.

Diepere Duik

Bash zelf is niet geweldig in het ontleden van datums. Historisch gezien bevatten Unix-systemen hier geen ingebouwde functie voor. De meeste scripts vertrouwden op externe tools of ingewikkelde omwegen. GNU date veranderde het spel met zijn -d optie, waardoor eenvoudige datumontleding en uitvoerformatting mogelijk werd.

Alternatieven? Zeker, er zijn awk, sed en perl. Elk heeft zijn eigen manier om het probleem aan te pakken, maar date is meestal de eerste keuze vanwege de eenvoud.

De implementatiedetails worden pittiger. date gebruikt standaard de systeemlocale-instellingen, wat invloed heeft op hoe het input interpreteert. Het overschrijven van locale kan nodig zijn voor consistent gedrag in verschillende omgevingen. Plus, omgaan met datums vóór 1970 of na 2038? Daar kunnen dingen buggy worden vanwege beperkingen van de Unix-timestamp.

Zie Ook