Ruby:
Een datum uit een string parsen
Hoe te:
Ruby staat voor je klaar met zijn Date
-bibliotheek, die het omzetten van tekenreeksen naar data zo makkelijk maakt als appeltaart. Vergeet alleen niet require 'date'
te doen voordat je begint.
require 'date'
# Parseer een datum (ISO-formaat) uit een tekenreeks
datum_tekenreeks = "2023-04-01"
geparseerde_datum = Date.parse(datum_tekenreeks)
puts geparseerde_datum
# => 2023-04-01
# Wat als ons formaat ontspoort? Probeer dit.
begin
aangepaste_datum = Date.strptime('03/31/2023', '%m/%d/%Y')
puts aangepaste_datum
rescue ArgumentError
puts "Dat is geen geldig datumformaat, maat."
end
# => 2023-03-31
Diepe Duik
Vroeger was Ruby minder vergevingsgezind met datumformaten. Coders moesten handmatig worstelen met tekenreeksen om data te onttrekken. Nu speurt Date.parse
automatisch de meest voorkomende datumformaten op, en als het in de war raakt, laat Date.strptime
je het exacte formaat specificeren om misinterpretaties te vermijden.
Alternatief-wise, als je te maken hebt met meer complexe datum-tijdgegevens, is DateTime
misschien je van pas, vooral voor het ontleden van tijden ook. Bovendien, voor degenen die buiten de standaardbibliotheek van Ruby spelen, is er de Chronic
-gem door de slimme mensen bij GitHub, die een hoop natuurlijke taal-datumuitdrukkingen begrijpt.
Onder al deze eenvoud wordt het ontleden van Ruby daadwerkelijk aangedreven door datumformaat sjablonen die verschillende delen van de tekenreeks met datum matchen met de overeenkomstige datumelementen (jaar, maand, dag, enz.). Dus wanneer je tekenreeks niet overeenkomt met het verwachte patroon, moet je Ruby een seintje geven met strptime
en de juiste formaatdirectieven.
Zie Ook
- Voor tijdzonefans kan de documentatie van
ActiveSupport::TimeWithZone
in Rails interessant zijn: https://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html - Chronic-gem voor het ontleden van datums in natuurlijke taal: https://github.com/mojombo/chronic