Een datum uit een string parsen

Fish Shell:
Een datum uit een string parsen

Hoe:

# Basisdatum parsing met behulp van de `strptime` functie
set date_string "2023-04-15"
set -l formaat "%Y-%m-%d"
set -l geparseerde_datum (string tolower (date -u --date=$date_string +"$formaat"))

echo $geparseerde_datum # Geeft uit: 2023-04-15
# Omgaan met meerdere datumformaten met een switch
set date_string1 "15-04-2023"
set date_string2 "April 15, 2023"

function parse_date -a date_string
    switch $date_string
        case "*-*-*"
            date --date=$date_string +%Y-%m-%d
        case "* *, *"
            date --date=$date_string +%Y-%m-%d
    end
end

echo (parse_date $date_string1) # Geeft uit: 2023-04-15
echo (parse_date $date_string2) # Geeft uit: 2023-04-15

Diepere Duik

Fish Shell heeft geen ingebouwde datum parsing functies zoals sommige andere talen. In plaats daarvan leunt het op externe hulpmiddelen zoals date. Het date commando is veelzijdig en met hulp van strptime (string parse time), dat een standaard C-bibliotheek functie is, kan het veel datumformaten aan.

Voor date en strptime schreven programmeurs aangepaste parsers—vaak buggy en complex. Nu handelen hulpprogramma’s de eigenaardigheden van tijdzones en schrikkeljaren af, wat ons hoofdpijn bespaart.

Alternatieven? Zeker, scripttalen zoals Python hebben robuuste datumtijdbibliotheken zoals datetime. Maar Fish, als ‘shell’, verkiest lichtgewicht, command-line programma’s voor een klus als deze.

In onze voorbeelden gebruikten we switch om het datumformaat voor date te kiezen om te parsen. Het is schoon en uitbreidbaar. Wil je meer formaten? Voeg meer case blokken toe.

Waarom string tolower in het eerste voorbeeld? Het gaat om consistentie, om te zorgen dat de formaatreeks en uitvoer uniform in kleine letters zijn. Een klein gebaar, maar het illustreert de voorkeur van Fish voor eenvoudige stringbewerkingen.

Zie Ook