Изменить строку в формате даты на другой формат - PullRequest
4 голосов
/ 10 марта 2012

У меня есть такая строка (ГГГГММДД):

20120225

И я хочу иметь такую ​​строку (ММ / ДД / ГГГГ):

02/25/2012

Какой хороший способ сделать это в Ruby?Я думал о преобразовании первой строки в дату, а затем изменить формат.Или просто обработайте строку и получите нужные мне части и создайте новую строку.

Ответы [ 4 ]

18 голосов
/ 10 марта 2012

парсинг , затем форматирование - лучшее решение:

Date.parse("20120225").strftime("%m/%d/%Y")  #=> "02/25/2012"
8 голосов
/ 10 марта 2012

strptime анализирует строковое представление даты с указанным шаблоном и создает объект даты.

Date.strptime('20120225', '%Y%m%d').strftime("%m/%d/%Y")  #=> "02/25/2012"
4 голосов
/ 11 марта 2012

Просто для удовольствия, как насчет:

'20120225'.unpack('A4A2A2').rotate.join('/')
1 голос
/ 10 марта 2012

Это возможно с регулярными выражениями:

s1 = '20120225'
s2 = "$2/$3/$1" if s1 =~ /(\d{4})(\d{2})(\d{2})/

Или, если вы уверены в формате вашей строки и у вас есть проблемы с производительностью, я думаю, что лучшим решением будет

s2 = s1[4..5] + '/' + s1[6..7] + '/' + s1[0..3]

Но если у вас нет потребности в производительности, я думаю, что решение Эндрю Маршалла лучше, потому что оно проверяет правильность даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...