我正在尝试这个简单的脚本,但不知怎的,我每次都会额外获得2天的时间:
#!/bin/bash
date=$(date +%j)
remaining="$(( 365 - $date))"
echo $remaining
2015年1月12日我剩下355天,而应该是353。
日期和一切都很好。
答案 0 :(得分:5)
输出的日期编号为前导零:
$ date +%j
012
这意味着该数字将被解释为八进制,八进制012等于十进制10(这就是为什么它被2关闭)。您可以手动指定基数以覆盖默认解释:
date=$(date +%j)
remaining="$(( 365 - 10#$date))"
echo "$remaining"
今天1月12日给出353。
作为旁注,如果您想获得当年的总天数而不是硬编码365,您可以使用:
days_this_year=$(date -d "$(date +%Y)/12/31" +%j)