我有多个日期来自用户输入,例如:
MM-DD-YYYY
6-3-1975
MM/DD/YYYY
4/23/1967
使用require 'time'
并尝试Time.parse("4/23/1967")
给我错误time.rb:argument out of range
。
使用破折号或斜线转换不同用户输入以解析的任何解决方案?
答案 0 :(得分:2)
解决方案:
require 'date'
userDate = "4-23-1967"
readDate = Date.strptime(userDate, "%m-%d-%Y")
convertedDate = readDate.strftime("%-m/%-d/%Y")
puts convertedDate
OUTPUT: 4/23/1967
答案 1 :(得分:1)
尝试以下:
Time.parse("23/4/1967")
#=> 1967-04-23 00:00:00 +0100
Time.parse("3-6-1975")
#=> 1975-06-03 00:00:00 +0100
所以问题是您的月和日订单是相反的。
答案 2 :(得分:-1)
听起来您应该使用gsub
将您不想要的字符替换为您所使用的字符。
input = "6-3-1975"
sanitized_input = input.gsub(/[- ]/, '/')
在方括号内,您可以放置您不想要的任何分隔符。