Można użyć metody Date.strptime
przewidzianego w standardowej biblioteki Ruby:
require 'date'
string = "20120723"
date = Date.strptime(string,"%Y%m%d")
Alternatywnie, jak zasugerowano w komentarzach, można użyć Date.parse
, ponieważ heurystyka działa poprawnie w tym przypadku:
require 'date'
string = "20120723"
date = Date.parse(string)
Obie podniosą ArgumentError
, jeśli data jest nieprawidłowa:
require 'date'
Date.strptime('2012-March', '%Y-%m')
#=> ArgumentError: invalid date
Date.parse('2012-Foo') # Note that '2012-March' would actually work here
#=> ArgumentError: invalid date
Jeśli chcesz również reprezentować godziny, minuty i tak dalej, powinieneś spojrzeć na DateTime. DateTime udostępnia również metodę parse
, która działa podobnie do metody analizy paczek pod adresem Date
. To samo dotyczy strptime
.
Date.parse działa również dla YYYYMMDD. Nie jest wymagany ciąg formatu. – rrhartjr
Co z wyjątkiem analizowania składni? – chrisapotek
Czy istnieje sposób na wykrycie, czy ciąg wyrzuci wyjątek analizy składniowej? – theUtherSide