Руби Нуб? создать рубиновую дату - PullRequest
4 голосов
/ 12 февраля 2010

Мне нужно преобразовать несколько двоичных файлов ASCII в MySQL. Эти файлы и записи содержат несколько 6-значных полей, представляющих даты в форме 090403 (гггмм), и я хотел бы преобразовать их в 2009-04-03. Как мне создать объект даты с этим вводом?

Ответы [ 5 ]

4 голосов
/ 12 февраля 2010

Вам нужен модуль ParseDate:

require 'parsedate'
# => true
res = ParseDate.parsedate("090403")
# => [9, 4, 3, nil, nil, nil, nil, nil]
Time.local(*res)
# => Fri Apr 03 00:00:00 +0100 2009
1 голос
/ 12 февраля 2010

Два решения


(a) Класс даты имеет метод strptime

d = Date.strptime("090403", "%d%m%y") 

Это дает вам стандартный класс Дата


(b) Стандартная библиотека имеет метод parsedate

require 'parsedate'
pd = ParseDate.parsedate("090403")
Time.local(pd)

Это дает вам класс времени


Вариант (а), вероятно, то, что вы хотите

0 голосов
/ 13 февраля 2010

Я предпочитаю использовать Время.

require 'time'
Time.parse("090403").strftime("%Y-%m-%d")
0 голосов
/ 12 февраля 2010
> d = Date.strptime("090403", "%y%m%d")
=> #<Date: 4909849/2,0,2299161>
> puts d
2009-04-03
0 голосов
/ 12 февраля 2010

Вы можете использовать метод DateTime.strptime .

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