ruby - 红宝石 - 多少天?
问题描述
我需要根据三个参数计算地球上生活了多少天:日、月和年。我不知道如何将输入转换为日期;然后如何将日期转换为天数。这是我目前的代码......
require 'date'
def age_in_days(day, month, year)
lived = (day+"-"+month+"-"+year).to_s
date_lived Date.parse(lived)
return (Date.today - date_lived).to_i
end
解决方案
您可以使用以下命令直接创建Date
对象:
Date.new(year, month, day)
无需将其转换为字符串并进行解析。解析也可能很危险。是1982-04-02
2月4日还是4月2日?
顺便说一句,您不能像这样添加数字和字符串。应该1 + '2'
是'12'
或3
?Ruby 无法为您做出决定,因此您需要将整数显式转换为字符串。
day.to_s + "-" + month.to_s + "-" + year.to_s
或者干脆
[day, month, year].join('-')
但无论如何你都不需要它:
require 'date'
def age_in_days(day, month, year)
birthdate = Date.new(year, month, day)
(Date.today - birthdate).to_i
end
推荐阅读
- java - Repast Simphony Java 运行期间 CPU 和内核使用率低
- docker - 从 docker 容器在 dataproc 中运行 pyspark 数据帧
- sql - 无论如何,如何让 DELETE 删除没有约束问题的行?
- azure - 无法连接到服务器:拨号 tcp:lookup
: 没有这样的主机 - json - PostgreSQL - 解析嵌套的 JSON 参数
- vb.net - 有没有办法在 vb.net 中使选项语句“全局”?
- ios - 如何确定从用户位置 (CLLocationCoordinate2D) 到 CGPath 的距离?
- python - 我怎样才能创建这样的功能?
- eslint - 故事书 mdx 的 eslint
- sql - 按日期获取前 3 条记录 SQL Server 2012