正如问题听起来一样.我想从20120203减去说20120115并得到19作为答案.在shell脚本中实现此功能的最佳方法是什么?
Eug*_*eck 30
let DIFF=(`date +%s -d 20120203`-`date +%s -d 20120115`)/86400
echo $DIFF
Run Code Online (Sandbox Code Playgroud)
提出这个解决方案使用bc:
current="$(date +%s.%N)" #current date, precise to nanoseconds
old="$(date +%s.%N -d `sh some_script_that_gives_a_date.sh`)" #convert output to ns too
diff=$(echo "$current-$old" |bc)
Run Code Online (Sandbox Code Playgroud)
date +%s.%N -d $1接受任意日期并将其转换为给定格式 (在本例中+%s.%N为float秒)。意识到
-d 不是 POSIX 日期的一部分。[但是]只要[你]不使用像Solaris这样的发行版([OP]将其标记为linux而不是unix)[你]应该很好。:)
date $2 -d @0$diff #Pad diff with leading zero
Run Code Online (Sandbox Code Playgroud)
$2日期格式又在哪里,请参见此处的示例