如何在SHELL获取当天时间的月份和上个月的月份还有下个月的月份

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SHELL获取当天时间的月份和上个月的月份还有下个月的月份相关的知识,希望对你有一定的参考价值。

上个月比较好写,减去当前日期,再减1天
# date -d "-1 days" -d "-`date +%d` days" +%m
09
------------------------------------------------------------
下个月就不好写咯
date里的1 month有问题
比如今天是10月31日
# date -d "1 month" +%m
12
变成12月了

# date +%m
10
获取当前月份

那么下个月只好写代码了:
now_month=`date +%m`
if [ $now_month -ne 12 ];then
echo nextmonth is `expr $now_month + 1`

else
echo nextmonth is 01

fi
参考技术A linux中:
当月
date +%Y%m
上个月
date -d "(date +%Y%m)01 last month" +%Y%m
下个月
date -d "(date +%Y%m)01 next month" +%Y%m

如何在给定的某个月份获取上个月的名称(用文字而不是数值)? [复制]

【中文标题】如何在给定的某个月份获取上个月的名称(用文字而不是数值)? [复制]【英文标题】:How to get previous month name on given some month (in words not numerical value)? [duplicate] 【发布时间】:2021-11-10 10:06:41 【问题描述】:

我想要一个函数,可以给出任何给定月份的上一个月的全名[不仅仅是当前月份] 例如:prevMonth(August) = July; prevMonth(January)= December

我是 js 新手,不知道如何使用这个数组来获取结果:

monthsarray: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

【问题讨论】:

您好,请查看developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 我可以通过在使用 Copilot 时简单地输入函数名称并点击选项卡来创建解决方案。 travis.media/how-to-use-github-copilot-vscode - 我认为 Copilot 非常适合想要学习解决问题的好方法的新开发人员。只要你花时间理解代码。 const getPrev = month => const m = monthsarray.indexOf(month); return monthsarray[(m+monthsarray.length-1)%monthsarray.length]; 标记的副本没有回答这个问题。 @mplungjan——不知道你为什么要打扰const m,它只用了一次并且需要大量额外的输入:const getPrev = month => monthsarray[(monthsarray.indexOf(month) + monthsarray.length - 1) % monthsarray.length]; :-) 【参考方案1】:

期待这样一个简单的解决方案吗?

var monthsarray = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

function prevMonth(curMonth) 

  var curMonthIndex = monthsarray.indexOf(curMonth);
  var prevMonthIndex;
  if (curMonthIndex == 0) prevMonthIndex = monthsarray.length - 1;
  else if (curMonthIndex == monthsarray.length - 1) prevMonthIndex = 0;
  else prevMonthIndex = curMonthIndex - 1;

  return monthsarray[prevMonthIndex];



console.log(prevMonth("August"));
console.log(prevMonth("December"));

【讨论】:

【参考方案2】:

let monthsarray1= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] ;

let m="May";

console.log(pvsMonth(m))


function pvsMonth(m)

    let ln=monthsarray1.length

   

    let idx=monthsarray1.indexOf(m)

 
    
    if(idx==0)
    return  monthsarray1[ln-1]
    else
        return  monthsarray1[idx-1]
    
    

【讨论】:

【参考方案3】:
function prevMonth(month) 
    const index = monthsarray.indexOf(month);
    if (index > 0) 
        return monthsarray[index - 1];
    
    if (index === 0) 
        return monthsarray[monthsarray.length - 1];
    
    throw new Error('Invalid Month given');

【讨论】:

以上是关于如何在SHELL获取当天时间的月份和上个月的月份还有下个月的月份的主要内容,如果未能解决你的问题,请参考以下文章

Presto sql获取上个月的数据直到当天的数据?

如何从 Hive 表中获取月份 = 当前月份 else 月份 = 上个月(当前月份 - 1)的记录?

如何在给定的某个月份获取上个月的名称(用文字而不是数值)? [复制]

如何使用月份名称获取最近 3 个月的计数,如果该月份没有记录需要使用月份名称获取 0 [重复]

在java中如何通过一个月份,获得该月份的第一天的日期?

MySQL获取月份和季度