我可以为您进行翻译。以下是需要翻译的it技术相关内容:
我从用户输入中得到了多个日期,例如:
MM-DD-YYYY
6-3-1975
MM/DD/YYYY
4/23/1967
使用内置的Ruby require 'time'
尝试使用Time.parse("4/23/1967")
时,出现错误信息:time.rb : argument out of range
。
有没有解决方案可以将用户输入的不同格式(带破折号或斜杠)转换为可解析的格式?
我可以为您进行翻译。以下是需要翻译的it技术相关内容:
我从用户输入中得到了多个日期,例如:
MM-DD-YYYY
6-3-1975
MM/DD/YYYY
4/23/1967
使用内置的Ruby require 'time'
尝试使用Time.parse("4/23/1967")
时,出现错误信息:time.rb : argument out of range
。
有没有解决方案可以将用户输入的不同格式(带破折号或斜杠)转换为可解析的格式?
解决方案:
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
请尝试以下代码:
Time.parse("23/4/1967")
#=> 1967-04-23 00:00:00 +0100
Time.parse("3-6-1975")
#=> 1975-06-03 00:00:00 +0100
Time.parse(date.match(/^(\d+)[^\d](\d+)/).captures.reverse.push(date.match(/[^\d](\d{4})$/)[1]).join('-'))
- Jing Li看起来你应该使用gsub
函数,将你不想要的字符替换为你需要的字符。
input = "6-3-1975"
sanitized_input = input.gsub(/[- ]/, '/')
在方括号内,您可以放置任何您的用户包含但您不想要的分隔符。
6/3/1975
是一种格式,Ruby 将错误解释为天数是 "6" 月份是 "3" ,除非进行更多的工作来强制 Ruby 正确解析该字符串。因此,你的答案只会推迟由于像 1/13/1975
这样的值而导致的被拒绝的字符串的问题,结果是 parse
始终无法理解的日期。 - the Tin Man
Time.parse
实现什么。 - jkeuhlenstrptime
解析为正确的格式或一种形式,不允许他们输入月份和日期值,而是使用弹出窗口或选择框。 - the Tin Man