2010-02-12 23 views
4

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

回答

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

两种解决方案


(一)Date类有strptime方法

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

这就给了你一个标准的Date类


(二)标准图书馆有parsedate方法

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

这给你一个时间类


方案(a)可能是你想要

0

什么,我更喜欢使用时间。

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

为什么你喜欢使用Time而不是Date.strptime方法 – user271916 2010-02-13 15:08:07

+0

只是一个偏好问题。随着时间的推移,您可以轻松地使用时间并获得Date的大部分功能。很容易获得一天中的当前时间并及时来回移动。 – Pran 2010-02-17 17:22:22