需要将“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”有更好的方法吗?
答案 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)>