Ruby Noob?创建红宝石日期

时间:2010-02-12 15:08:22

标签: ruby

我必须将几个ASCII二进制文件转换为MySQL。这些文件和记录包含几个6位数的字段,表示090403(yymmdd)形式的日期,我想将它们转换为2009-04-03。如何使用此输入创建日期对象?

5 个答案:

答案 0 :(得分:4)

您需要的是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 :(得分:1)

两种解决方案


(a)日期类具有strptime方法

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

这为您提供了标准的日期类


(b)标准库具有parsedate方法

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

这会给你一个时间等级


选项(a)可能是你想要的

答案 2 :(得分:0)

您可以使用DateTime.strptime方法。

答案 3 :(得分:0)

> d = Date.strptime("090403", "%y%m%d")
=> #<Date: 4909849/2,0,2299161>
> puts d
2009-04-03

答案 4 :(得分:0)

我更喜欢使用Time。

require 'time'
Time.parse("090403").strftime("%Y-%m-%d")