如何使用bash获得每月本年度的最后一天,而无需使用的if else或开关或while循环? [英] How to use bash to get the last day of each month for the current year without using if else or switch or while loop?

查看:106
本文介绍了如何使用bash获得每月本年度的最后一天,而无需使用的if else或开关或while循环?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们知道,每年有以下最多一天每个月如下:

As we know that each year have the following max day in each month as follows:

Jan - 31 days
Feb - 28 days / 29 days (leap year)
Mar - 31 days
Apr - 30 days
May - 31 days
Jun - 30 days
Jul - 31 days
Aug - 31 days
Sep - 30 days
Oct - 31 days
Nov - 30 days
Dec - 31 days

如何,我得到的bash为本年度返回值(每月的最后一天),而无需使用如果别人开关,而循环?

推荐答案

我的看法:

for m in {1..12}; do
  date -d "$m/1 + 1 month - 1 day" "+%b - %d days"; 
done

要解释一下:对于第一次迭代当m = 1 -d 的说法是1/1 + 1个月 - 1天和1/1的除preTED为1月1日。因此,1月1日+ 1个月 - 3天是31月下一次迭代2/1是2月1日,加一个月减了一天拿到2月28日或29等。

To explain: for the first iteration when m=1 the -d argument is "1/1 + 1 month - 1 day" and "1/1" is interpreted as Jan 1st. So Jan 1 + 1 month - 1 day is Jan 31. Next iteration "2/1" is Feb 1st, add a month subtract a day to get Feb 28 or 29. And so on.

这篇关于如何使用bash获得每月本年度的最后一天,而无需使用的if else或开关或while循环?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆