解决linux系统求前N月月份的bug

日常工作中,需要获取某个日期(20240531)的前N个月,通常会写命令

date -d "20240531 last-month" '+%Y%m'

我期望得到202404 但是很意外:

经过几轮测试,发现只要月内天数超过30天,即所有大月,计算都会有问题,于是为了解决这个问题,特意写了一个shell函数,代码如下:

bash 复制代码
function getLastMonth(){
# 用户输入的日期
current_date="$1"
# 月份偏移量
pos_month="$2"
 获取当前年
current_year=$(date -d "$current_date" '+%Y')

# 当前月份
current_month=$(date -d "$current_date" '+%m')

# 计算新的月份
let "new_month = current_month - pos_month"

# 如果结果的月份小于1,则需要调整年份和月份
if [ $new_month -lt 1 ]; then
  # 计算去年的月份
  let "new_month += 12"
  let "current_year -= 1"
fi
# 格式化输出为yyyymm
lastM=$(date -d "${current_year}-${new_month}-01" '+%Y%m')
echo $lastM
}

函数调用示例 mylastMonth=`getLastMonth 20240531 6`

可以获得202311月份

相关推荐
福大大架构师每日一题1 小时前
pytorch v2.7.1 发布!全面修复关键BUG,性能与稳定性再升级,2025年深度学习利器必备!
pytorch·深度学习·bug
1nv1s1ble1 天前
记录rust滥用lazy_static导致的一个bug
算法·rust·bug
银色的白3 天前
开发记录:修复一些Bug,并实现两个功能
bug
吃货界的硬件攻城狮3 天前
【BUG】记STM32F030多通道ADC DMA读取乱序问题
stm32·嵌入式硬件·bug
星释3 天前
Yii2项目自动向GitLab上报Bug
前端·gitlab·bug·yii
upp4 天前
【bug】Error: /undefinedfilename in (/tmp/ocrmypdf.io.9xfn1e3b/origin.pdf)
ubuntu·pdf·bug·ghostscript
杨过姑父4 天前
部署开源版禅道,修改apache端口无效解决
bug·apache·软件工程·issue
chao_7896 天前
针对“仅某个地区出现Bug”的原因分析与解决方案
测试用例·bug
帅帅哥的兜兜6 天前
Bug问题
bug
养意6 天前
git提交代码和解决冲突修复bug
git·bug