gpt4 book ai didi

ruby - 你怎么说在 Ruby 中发生了 "x minutes ago"或 "x hours ago"或 "x days ago"?

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:26 26 4
gpt4 key购买 nike

如果我在 Ruby 中有一个时间变量,我怎么能说它指的是发生以下事件之一的事件:

“x 分钟前”或“x 小时前”或“x 天前”

显然,如果某事发生在 2 天前,我不想说它发生在某某分钟前。

最佳答案

这是与语言无关的版本,您应该能够将其转换成任何语言:

ONE_MINUTE = 60
ONE_HOUR = 60 * ONE_MINUTE
ONE_DAY = 24 * ONE_HOUR
ONE_WEEK = 7 * ONE_DAY
ONE_MONTH = ONE_DAY * 3652425 / 120000
ONE_YEAR = ONE_DAY * 3652425 / 10000

def when(then):
seconds_ago = now() - then

if seconds_ago < 0:
return "at some point in the future (???)"
if seconds_ago == 0:
return "now"

if seconds_ago == 1:
return "1 second ago"
if seconds_ago < ONE_MINUTE:
return str(seconds_ago) + " seconds ago"

if seconds_ago < 2 * ONE_MINUTE:
return "1 minute ago"
if seconds_ago < ONE_HOUR:
return str(seconds_ago/ONE_MINUTE) + " minutes ago"

if seconds_ago < 2 * ONE_HOUR:
return "1 hour ago"
if seconds_ago < ONE_DAY:
return str(seconds_ago/ONE_HOUR) + " hours ago"

if seconds_ago < 2 * ONE_DAY:
return "1 day ago"
if seconds_ago < ONE_WEEK:
return str(seconds_ago/ONE_DAY) + " days ago"

if seconds_ago < 2 * ONE_WEEK:
return "1 week ago"
if seconds_ago < ONE_MONTH:
return str(seconds_ago/ONE_WEEK) + " weeks ago"

if seconds_ago < 2 * ONE_MONTH:
return "1 month ago"
if seconds_ago < ONE_YEAR:
return str(seconds_ago/ONE_MONTH) + " months ago"

if seconds_ago < 2 * ONE_YEAR:
return "1 year ago"
return str(seconds_ago/ONE_YEAR) + " years ago"

请注意,年/月数字是近似值(基于平均值),但这并不重要,因为相对误差仍然非常低。

关于ruby - 你怎么说在 Ruby 中发生了 "x minutes ago"或 "x hours ago"或 "x days ago"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com