试图在 Shell 脚本 $(date +%j) 中找到确切的剩余天数
Trying to find the exact remaining days in Shell Script $(date +%j)
我正在尝试这个简单的脚本,但不知何故我每次都多了 2 天:
#!/bin/bash
date=$(date +%j)
remaining="$(( 365 - $date))"
echo $remaining
2015 年 1 月 12 日我还有 355 天,而它应该是 353 天。
日期和一切都很好。
天数输出前导零:
$ 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)
我正在尝试这个简单的脚本,但不知何故我每次都多了 2 天:
#!/bin/bash
date=$(date +%j)
remaining="$(( 365 - $date))"
echo $remaining
2015 年 1 月 12 日我还有 355 天,而它应该是 353 天。
日期和一切都很好。
天数输出前导零:
$ 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)