Ответ 1
Используйте встроенные функции Time.parse
и Time#strftime
.
require 'time'
time = Time.parse("17-Nov-2011")
time.strftime("%m/%d/%y")
# => "11/17/11"
У меня есть этот код, который преобразует массив строк даты из формата от 17 ноября 2011 года по 11/17/11:
def date_convert dates
months = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4,
'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8,
'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12 }
new_dates = []
dates.each do |date|
date_split = date.split('-')
month = months[date_split[1]]
day = date_split[0]
year = date_split[2][-2, 2]
new_dates.push ("#{month}/#{day}/#{year}")
end
new_dates
end
Есть ли лучший, возможно встроенный способ сделать это преобразование с Ruby? Я изучаю Ruby, поэтому любой другой подход к этому будет высоко оценен.
Используйте встроенные функции Time.parse
и Time#strftime
.
require 'time'
time = Time.parse("17-Nov-2011")
time.strftime("%m/%d/%y")
# => "11/17/11"
С помощью Date#strftime
вы можете форматировать дату. Date.strptime
позволяет выполнить "обратное" действие: создать дату из строки.
При объединении обоих вы получите результат:
puts Date.strptime('17-Nov-2011', '%d-%b-%Y').strftime('%m/%d/%y')
Каждый %
-параметр является частью строки даты.
Вам нужно:
Для синтаксического анализа строки даты:
Для создания строки:
Ruby имеет довольно надежный набор функций даты и времени, ознакомьтесь с классом Date.
Date.parse("17-Nov-2011").strftime('%m/%d/%y')