这杀死了我的vs代码中的短毛猫。 有没有一种单线可以更好地执行此操作?
echo -n "$((($(date -j -f "%Y%m%d" "$(( $(date +"%Y0101")+10000 ))" "+%s") - $(date "+%s"))/(60*60*24)))";
echo " days until $(( $(date +"%Y")+1 ))"
打印:
308 days until 2020
答案 0 :(得分:0)
我会使用python:
python -c 'from datetime import datetime as dt;y=dt.now().year+1;print('{} days until {}'.format((dt(y,1,1)-dt.now()).days,y))'
是以下内容的单行版本:
from datetime import datetime as dt
next_year = dt.now().year + 1;
days = (dt(next_year, 1, 1) - dt.now()).days
print('{} days until {}'.format(days, next_year))
输出(使用UTC时区):
306 days until 2020
答案 1 :(得分:0)
Pure Bash一线(在Linux上测试,此处没有Mac)
eoy=$([ -n "$(date -d 'Feb 29' '+%-j' 2>/dev/null)" ] && echo 366); echo "$((${eoy:-365} - $(date '+%-j'))) days until $(($(date -d 'Dec 31' '+%Y') +1))"
结果:
307 days until 2020
测试a年:
eoy=$([ -z "$(date -d 'Feb 29 2020' '+%-j' 2>/dev/null)" ] && echo 366); echo "$((${eoy:-365} - $(date '+%-j'))) days until $(($(date -d 'Dec 31 2020' '+%Y') +1))"
结果:
308 days until 2021
两行相同:
# year days if leap year
eoy=$([ -z "$(date -d 'Feb 29' '+%-j' 2>/dev/null)" ] && echo 366)
# ${eoy:-365} -> if $eoy is not set or empty string use default 365
echo "$((${eoy:-365} - $(date '+%-j'))) days until $(($(date -d 'Dec 31' '+%Y') +1))"