我们衡量时间的方式有点乱。 一分钟有 60 秒,一小时有 60 分钟。 这源自古代巴比伦,他们以 60 作为数字系统的基础。 一天有 24 小时,一周有 7 天,那么一个月有多少天呢? 嗯,一个月的天数不仅取决于它是哪个月,还取决于你所在的国家使用哪种历法。
那如果我们改用秒来表示时间间隔呢? 这样,我们就能借助公制前缀,把大量的秒写成更容易理解的数量。
如果有一天我们殖民了火星或其他星球,衡量时间会变得更加混乱。 当有人说“年”的时候,指的是地球上的年还是火星上的年?
这个练习的灵感来自作家 Vernor Vinge 的科幻小说 "A Deepness in the Sky"。 在书中,作者用公制作为时间度量的基础。
你的任务是确定某个日期之后一吉秒的日期和时间。
一吉秒等于十亿秒。 也就是 1 后面有 9 个 0。
如果你出生在 2015 年 1 月 24 日 22:00(晚上 10 点),那么到 2046 年 10 月 2 日 23:46:40(晚上 11 点 46 分 40 秒),你就满一吉秒了。
本练习需要使用 GNU awk 的时间函数。
对于日期时间的解析和格式化函数,一定要设置 UTC 标志。演示如下:
export TZ=Asia/Kolkata
gawk 'BEGIN {
time = 1234567890
print strftime("%Y-%m-%d %T", time) # format for local timezone
print strftime("%Y-%m-%d %T", time, 1) # format for UTC
}'
输出:
2009-02-14 05:01:30
2009-02-13 23:31:30