Ruby:
Анализ даты из строки
Как это сделать:
Ruby поддерживает вас с его библиотекой Date
, которая делает превращение строк в даты простым, как пирог. Только не забудьте require 'date'
перед тем, как начать.
require 'date'
# Разбор даты (в формате ISO) из строки
date_string = "2023-04-01"
parsed_date = Date.parse(date_string)
puts parsed_date
# => 2023-04-01
# Что, если наш формат вдруг станет неправильным? Попробуйте это.
begin
custom_date = Date.strptime('03/31/2023', '%m/%d/%Y')
puts custom_date
rescue ArgumentError
puts "Это недопустимый формат даты, дружище."
end
# => 2023-03-31
Глубокое Погружение
В старые времена Ruby был менее терпим к форматам даты. Кодерам приходилось вручную манипулировать строками для извлечения дат. Сейчас Date.parse
автоматически распознает большинство общих форматов даты, и если возникает путаница, Date.strptime
позволяет указать точный формат, чтобы избежать недопонимания.
Альтернативно, если вы имеете дело с более сложными данными даты-времени, DateTime
может быть вашим выбором, особенно для разбора времени. Кроме того, для тех, кто работает вне стандартной библиотеки Ruby, существует gem Chronic
от умных ребят из GitHub, который понимает массу выражений естественного языка для дат.
Под всей этой простотой, разбор Ruby на самом деле работает на шаблонах форматов дат, которые соответствуют различным частям строки даты с соответствующими элементами даты (год, месяц, день и т. д.). Так что, когда ваша строка не соответствует ожидаемому образцу, вам нужно дать знать Ruby с помощью strptime
и правильных директив формата.
Смотрите Также
- Для фанатов временных зон, документация
ActiveSupport::TimeWithZone
в Rails может быть интересна: https://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html - Gem Chronic для разбора дат в естественном языке: https://github.com/mojombo/chronic