Ruby 将 DD/MM/YYYY 字符串转换为 YYYY,MM,DD
Ruby convert DD/MM/YYYY string to YYYY,MM,DD
我正在收集用户输入 "DD/MM/YYYY"
目的是将 mktime 作为 csv YYYY,MM,DD 传递。
puts "Please enter dob in dd/mm/yyyy format;"
inp = gets.chomp
inp = inp.gsub(" ","")
while inp.length != 10
puts "Please use dd/mm/yyyy format"
inp = gets.chomp
end
bday = inp.gsub("/",",")
ctime = Time.new
btime = Time.mktime(bday)
lsecs = ctime - btime
ysecs = Time.mktime(2001) - Time.mktime(2000)
rsecs = 1000000000 - lsecs
ryears = rsecs / ysecs
puts "You are currently #{lsecs} seconds old"
puts "You have #{ryears} years until you are a billion seconds old!!"
如您所见,剩下的唯一任务就是反转用户输入,但很难找到紧凑的解决方案。如果您有办法,请随时帮助缩短此代码。
解决方法:
(秒数和四舍五入的年份 down/delimited)
def reformat_date(str)
str.split("/").reverse.join(",")
end
puts "Please enter dob in dd/mm/yyyy format;"
inp = gets.chomp
inp = inp.gsub(" ","")
while inp.length != 10
puts "Please use dd/mm/yyyy format"
inp = gets.chomp
inp = inp.gsub(" ","")
end
ctime = Time.new
btime = Time.mktime(reformat_date(inp))
lsecs = ctime - btime
**lsecdel = lsecs.round(0).to_s.reverse.gsub(/...(?=.)/,'\&,').reverse**
ysecs = Time.mktime(2001) - Time.mktime(2000)
rsecs = 1000000000 - lsecs
ryears = rsecs / ysecs
puts "You are currently #{lsecdel} seconds old"
puts "You have #{ryears.round(2)} years until you are a billion seconds old!!"
怎么样?
def reformat_date(str)
str.split('/').reverse.join(',')
end
require 'date'
now = Date.today
years_BACK_From_Now = (now - 365)
p years_BACK_From_Now.strftime("%m-%d-%Y").to_s
p years_BACK_From_Now.split('-').reverse.join('/')
您可以获得任何所需格式的输入,并使用下面的格式将其转换为 yyyy,mm,dd 格式
Date.parse("10/12/1995").strftime('%Y,%m,%d')
输出:1995,12,10
我正在收集用户输入 "DD/MM/YYYY"
目的是将 mktime 作为 csv YYYY,MM,DD 传递。
puts "Please enter dob in dd/mm/yyyy format;"
inp = gets.chomp
inp = inp.gsub(" ","")
while inp.length != 10
puts "Please use dd/mm/yyyy format"
inp = gets.chomp
end
bday = inp.gsub("/",",")
ctime = Time.new
btime = Time.mktime(bday)
lsecs = ctime - btime
ysecs = Time.mktime(2001) - Time.mktime(2000)
rsecs = 1000000000 - lsecs
ryears = rsecs / ysecs
puts "You are currently #{lsecs} seconds old"
puts "You have #{ryears} years until you are a billion seconds old!!"
如您所见,剩下的唯一任务就是反转用户输入,但很难找到紧凑的解决方案。如果您有办法,请随时帮助缩短此代码。
解决方法: (秒数和四舍五入的年份 down/delimited)
def reformat_date(str)
str.split("/").reverse.join(",")
end
puts "Please enter dob in dd/mm/yyyy format;"
inp = gets.chomp
inp = inp.gsub(" ","")
while inp.length != 10
puts "Please use dd/mm/yyyy format"
inp = gets.chomp
inp = inp.gsub(" ","")
end
ctime = Time.new
btime = Time.mktime(reformat_date(inp))
lsecs = ctime - btime
**lsecdel = lsecs.round(0).to_s.reverse.gsub(/...(?=.)/,'\&,').reverse**
ysecs = Time.mktime(2001) - Time.mktime(2000)
rsecs = 1000000000 - lsecs
ryears = rsecs / ysecs
puts "You are currently #{lsecdel} seconds old"
puts "You have #{ryears.round(2)} years until you are a billion seconds old!!"
怎么样?
def reformat_date(str)
str.split('/').reverse.join(',')
end
require 'date'
now = Date.today
years_BACK_From_Now = (now - 365)
p years_BACK_From_Now.strftime("%m-%d-%Y").to_s
p years_BACK_From_Now.split('-').reverse.join('/')
您可以获得任何所需格式的输入,并使用下面的格式将其转换为 yyyy,mm,dd 格式
Date.parse("10/12/1995").strftime('%Y,%m,%d')
输出:1995,12,10