Manipuleer datums en tijdstippen

kapotte wekker

Artikelgereedschap

  • Tip ons
  • Printen
  • Reacties (6)
1x Aanbevolen

Gepubliceerd: Dinsdag 25 oktober 2011
Auteur: Koen Vervloesem

In back-upscripts en andere shellscripts moet je vaak rekenen met datums en/of tijdstippen. De tools uit de collectie dateutils kunnen hierbij heel wat helpen.

Dateutils is een collectie tools om op de commandline met datums en tijdstippen te rekenen en er andere acties op uit te voeren. De programma's dconv, dadd, ddiff, dseq, dtest en dgrep kunnen respectievelijk datums converteren, optellen, verschillen berekenen, sequenties genereren, vergelijken en greppen. De programma's tconv, tadd, tdiff, tseq, ttest en tgrep doen hetzelfde, maar dan met tijdstippen. Verder bevat dateutils ook strptime, een commandline-versie van de C-functie met dezelfde naam.

Voorbeelden

Met dseq genereer je sequenties van datums, net zoals seq dat doet voor gehele getallen. Bovendien kun je ook weekdagen overslaan, zoals in de volgende code die alle dagen van 1 tot 10 november opsomt, de weekends uitgezonderd:


dseq 2011-11-01 2011-11-10 --skip sat,sun

Dtest werkt zoals test, maar dan met datums. Zo kun je in een shellscript bijvoorbeeld heel eenvoudig testen of we op dit moment na een bepaalde datum zijn:


if dtest now --gt 2011-11-01; then
echo "too late"
fi

En met dadd kun je periodes optellen bij of aftrekken van een datum, zoals dadd 2011-11-01 +3d of dadd 2011-11-01 -1w. Ddiff daarentegen berekent het verschil tussen twee opgegeven data, zoals ddiff 2011-12-27 2012-01-04. En met dgrep kun je lijnen uit een invoerstroom filteren die een datum bevatten die aan bepaalde voorwaarden voldoet, zoals dgrep '<2010-03-01' bestand.txt.

Strptime

Voor tijdstippen gelden dezelfde voorbeelden: vervang gewoon de initiële d in het commando door een t en gebruik tijdstippen in plaats van datums. En tot slot is er zoals gezegd strptime, dat de kracht van de C-functie strptime naar de commandline brengt. Hierdoor kun je datums en tijdstippen in een willekeurig invoerformaat inlezen en omzetten naar het vertrouwde formaat yyyy-mm-ddThh:mm:ss van ISO 8601. Bijvoorbeeld:


strptime -i "%a, %b %d %Y" "Mon, May 01 2000"

Kortom, dateutils ontlast je van heel wat werk om datums en tijdstippen te manipuleren. Je shellscripts worden er bovendien heel wat leesbaarder door.

De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.

Relevante whitepapers

Alle whitepapers >>

Nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox

Whitepapers

  • Maximaliseer het voordeel van SaaS

    Cloud-applicaties hebben grote invloed op het gebruik van de IT-architectuur en niet ieder project levert de verwachte voordelen op.

    Downloaden
  • Flexibele IT noodzaak voor bankenOnderzoeksrapport over de beperkte flexibiliteit van veel IT-systemen in de bancaire wereld. Lees meer!
  • Kostenbesparing voor long tail appsOplossing voor kostenkwesties in VDI. Technologie geschikt voor long tail apps.
» Meer whitepapers

Peiling

Loading Poll

Video: Review: HTC One X-smartphone met vijf...

Review: HTC One X-smartphone met vijf cores (video)