为克服这一挑战,您需要做的是编写最短的“ timeago”脚本,该脚本输出在给定的Unix时间戳与脚本运行时间之间的数十年,数年,数周,数天,数小时,数分钟和数秒的时间。
您必须以“最低的条款”给出时差,例如1 week
not 7 days
,9 years
not 0 decades 9 years
。您还必须正确使用复数形式,例如,1 day
不能1 days
。
您的脚本必须精确到正负1秒以内(因此精确的第二个舍入方法并不重要)。
Time Equivalency Table
1 decade = 10 years
1 year = 31536000 seconds (not technically correct but close enough)
1 week = 7 days
1 day = 24 hours
1 hour = 60 minutes
1 minute = 60 seconds
输出应为以下形式
A decade(s) B year(s) C week(s) D day(s) E hour(s) F minute(s) G second(s)
其中A...G
所有都是非负整数,并且s
仅在其中存在复数形式。
笔记
- 时间戳记永远是过去的时间。可能是负面的。
- 输入和输出可以是任何合理的值:stdin / stdout,函数输入和返回值等。
- 您可能没有使用任何已经执行此操作的工具。即,如果您的语言具有
timesince(timestamp)
内置功能,则您可能无法使用该功能。
我对此进行了广泛的编辑,以使其更加清晰,从而希望缓解问题不清楚的新用户与需要完善的老用户之间的较傻的战斗。这不是一个可怕的问题(尽管现在可能与此问题过于相似)。
鉴于自上次回答以来已过去了足够的时间,因此我以其177个字节的 Ruby实现声明了Three If By Whiskey,这是这种情况的赢家!
2
“如果是Javascript,则禁止使用JQuery:P其他一切都还可以。” - 那么Zepto被允许吗?
—
约翰·德沃夏克
规格有点差。请提供确切的定义,以示例的方式实现是不够的。
—
约翰·德沃夏克
Timeago是某种新的脚本语言吗?每30秒更新一次是可选的(如某处所述)还是一项要求(如另一处所述)?可以接受哪些I / O机制?应该使用什么取整?尤其是,舍入如何与可变长度的时间段(例如日历月份和年份)相互作用?其中一些可能暗示后续问题,具体取决于您的答案。
—
彼得·泰勒
@Abdossam我知道我们似乎都非常挑剔,但这是因为该站点上的问题应该具有客观的获胜标准和 明确的规格。
—
加尔文的爱好2014年
有两个建议:1)省略HTML部分。我猜没有人愿意在能够解决打印时间的实际任务之前编写HTML解析器。2)明确限制为“秒”,“分钟”,“小时”和“天”。如果愿意,可以添加“周”。但是没有明确定义月份和年份(28-31天/ 365或366天...)。在我看来,这应该解决该问题的主要问题。
—
Falko 2014年