计算自 X 以来的天数的聪明方法是什么?

ych*_*che 11 shell-script date

我从 2014 年 11 月 17 日开始在我现在的职位上工作。我想知道到现在为止已经过了多少天。关于如何使用 Linux 提出一个简单而好的解决方案的任何想法?

wur*_*tel 14

echo $(( (`date +%s` - `date +%s -d '2014/11/17'`) / 86400 )) days ago
Run Code Online (Sandbox Code Playgroud)

  • 这会导致闰秒错误。我的意思是,这*现在*几乎不重要,但是在 [10k 年左右](http://longnow.org/about/) 中,累积的错误可能足够重要。 (5认同)
  • 概率闰秒会触发大约 0.000001% 的错误。与此方法在遵守夏令时的区域设置中给出的错误天数相比,这是可以忽略不计的:2% 的情况...... (2认同)
  • @Kevin:如果他想知道他在某个地方工作了多少天,我们可以(直到冷冻或医学进一步发展)不要太在意这个 ^^ (2认同)

fro*_*utz 5

好吧,从表面上看:

$ date --date="-239 days"
Mon Nov 17 15:25:40 CET 2014
Run Code Online (Sandbox Code Playgroud)

在脚本中(效率不高,但是......也许它可以处理闰秒?;))

i=0
result=""
while [ "$result" != "20141117" ]
do
    i=$((i+1))
    result=$(date --date="-$i days" +%Y%m%d)
done
echo "$i" days have passed since "$result"
Run Code Online (Sandbox Code Playgroud)