将年份和年份转换为Ruby中的日历日期

时间:2016-03-11 11:57:45

标签: ruby

需要将“15307”转换为类似“2015-11-03”

的内容

我有以下代码

def juliantoregular(date1)
    temp = "20" + date1[0,2];
    year = temp.to_i;        
    if date1[2,1] == "0"      
       temp1 = date1[3,2];
    else
        temp1 = date1[2,3];
    end 
    juliannumber = temp1.to_i;
    date1 = Date.ordinal(year,juliannumber) 
    return date1;
end

输入代码是字符串“15307”有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

Date.strptime非常适合:

str = "15307"
puts Date.strptime(str, "%y%j")
# => 2015-11-03

在格式字符串"%y%j"中,%y表示两位数的年份,%j表示一年中的某一天。

答案 1 :(得分:0)

y, d = "15307".to_i.divmod 1_000     #⇒ [15, 307]
Date.parse("20#{y}-01-01") + (d - 1) #⇒ add days to Jan, 1st
#⇒ #<Date: 2015-11-03 ((2457330j,0s,0n),+0s,2299161j)>