【问题标题】:Ruby convert DD/MM/YYYY string to YYYY,MM,DDRuby 将 DD/MM/YYYY 字符串转换为 YYYY,MM,DD
【发布时间】:2015-08-02 13:25:19
【问题描述】:

我正在收集用户输入为“DD/MM/YYYY”

目的是以 csv YYYY,MM,DD 的形式传入 mktime。

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!!"

如您所见,剩下的唯一任务是反转用户输入,很难找到一个紧凑的解决方案。如果您有办法,请随时帮助缩短此代码。

解决方案: (以秒为单位,年份向下舍入/分隔)

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!!"

【问题讨论】:

    标签: date time mktime


    【解决方案1】:

    怎么样?

    def reformat_date(str)
      str.split('/').reverse.join(',')
    end
    

    【讨论】:

      【解决方案2】:

      您可以获取任何所需格式的输入,并使用下面的转换为 yyyy,mm,dd 格式

      Date.parse("10/12/1995").strftime('%Y,%m,%d')
      

      输出:1995,12,10

      【讨论】:

        【解决方案3】:
        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('/')
        

        【讨论】:

          猜你喜欢
          • 2016-06-21
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-19
          相关资源
          最近更新 更多