Sposób parse
próbuje znaleźć pasujący termin lub formatów daty i czasu, następnie przeanalizuj ciąg znaków, aby zwrócić wartości użyte do utworzenia nowej daty lub daty. Obsługuje wiele różnych formatów, co jest wygodne, jednak proces skanowania w celu znalezienia dopasowania spowalnia czas analizowania.
Ponadto, niektóre formaty powszechnie używane nie muszą "pasować". Zastanów się, co się dzieje tutaj:
Date.parse '31/01/2001'
=> #<Date: 2001-01-31 ((2451941j,0s,0n),+0s,2299161j)>
Data ciąg w '%d/%m/%Y'
(dzień, miesiąc, rok) format jest analizowany, choć nie jest to powszechne w Stanach Zjednoczonych, ponieważ Ruby nie jest językiem US-centric. Odwrócenie pierwszych dwóch pól powoduje:
Date.parse '01/31/2001'
ArgumentError: invalid date
from (irb):4:in `parse'
from (irb):4
from /Users/greg/.rbenv/versions/2.1.5/bin/irb:11:in `<main>'
irb(main):005:0> Date.parse '31/01/2001'
Zamiast 'sub' lub' gsub' użyj 'tr ('.', '')'. Jest szybszy i osiągnie to samo. –
... lub 'my_string.delete ('.')'. –