根据指定日期获取上一个月

看过不少类似文章,根据一个日期,要取得相应的上一个月的值,则利用Calendar的api:get(Calendar.MONTH) - 1)来算。

思路是对的,但这个api有坑的,例如:当前日期为:2021-03-30,得到的上一月的结果为:202103,但我们期望结果是:202102。

因为Calendar计算时,如果有时间算时间、有天算天,但我们期望结果是得到月,所以要先确保当前日期精确到月,即换算单位相同,具体代码如下,请参考:

DateUtil.YYYYMM常量,即字符串:"yyyyMM"

/*** 根据指定的日期对象,返回上一个年月字符串* @param theDate 指定的日期对象* @return*/public static String getLastYearMonth(Date theDate) {Calendar now = Calendar.getInstance();String yearMonth;if (theDate == null) {yearMonth = DateUtil.format(now.getTime(), DateUtil.YYYYMM);theDate = DateUtil.convert(yearMonth, DateUtil.YYYYMM);} else {yearMonth = DateUtil.format(theDate, DateUtil.YYYYMM);}theDate = DateUtil.convert(yearMonth, DateUtil.YYYYMM);now.setTime(theDate);now.set(Calendar.MONTH, now.get(Calendar.MONTH) - 1);return DateUtil.format(now.getTime(), DateUtil.YYYYMM);}

Good luck!

根据指定日期获取上一个月相关推荐

  1. js获取上一个月、下一个月

    /*** 获取上一个月** @date 格式为yyyy-mm-dd的日期,如:2014-01-25*/function getPreMonth(date) {var arr = date.split( ...

  2. php 使用strtotime获取上一个月月份的问题

    strtotime() 函数说明: strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳,比如: 1.输出当前时间戳:echo strtotime("now&q ...

  3. Android开发之Java和Calendar日期上一年,上一个月,前一天,前一周的方法

    公司做的项目要求选择日期可以选择上一个月的,很简单,但是涉及到临界日期,例如跨年 直接的问题从2019.1.1往前一个月那就不简单了,于是找到相关方法自己尝试下.理解出了两个往前一年的区别 看下图: ...

  4. php 上一个月的开始和结束,php获取上一个月的开始与结束时间遇到的问题

    改正之前: $_lastMonthStart = date('Y-m-1 00:00:00', strtotime("-1 month")); $_lastMonthEnd = d ...

  5. Java 获取上一个月的月份

    因最近在写代码的时候遇到了获取上个月月份的问题YYYYMM这个格式,根据给的工具类,获取出来的值是有问题的,所以记录以下. 问题方法 /*** 获取上个月的月份* 该方法有问题 三月份的29 30 3 ...

  6. 获取上一个月的同一天

    下面的代码是我在网上搜到的,成功解决的我的问题,我一直用的是set方法,不好使,改为add后就可以了! public static Calendar getDateOfLastMonth(Calend ...

  7. pgsql获取上一个月,上一个月第一天,上一个月最后一天

    测试数据: select  TO_CHAR((DATE_TRUNC('MONTH', CURRENT_DATE) + INTERVAL '-1 MONTH')::DATE,'YYYYMM') AS & ...

  8. oracle获取上一个月或者下一个月或者多少个月

    当月 2020-2-25 add_months()函数 负数:当前月份减去多少个月份  正数:当前月份添加多少个月份 . 字符串型: select  to_char(add_months(trunc( ...

  9. 获取上一个自然周的、上一个自然月的起始时间范围

    一般统计经常用的时间范围,在此提供两个经常用到,时间范围取每个月一号零时至下月一号零时之间 例如:当前日期是 20190910 20190801 00:00:00 -- 20190901 00:00: ...

最新文章

  1. 2022-2028年中国环烷基润滑油行业市场研究及前瞻分析报告
  2. ijkplayer iOS集成
  3. 网络推广费用浅析网站具备哪些特点能更受蜘蛛的青睐?
  4. openstack架构详解图_英特尔顶级技术专家合力缔造精品:Linux开源网络全栈详解...
  5. PHP memory_get_usage()管理内存
  6. 最佳论文!牛津大学揭示梯度下降复杂度理论
  7. VUE自学日志02-应用与组件实例
  8. java extends 继承的一些小结。
  9. android sha1和签名证书的学习
  10. Oracle :备份 、还原数据库
  11. 获取cookie_XSS获取COOKIE
  12. log4j配置详解(非常详细)
  13. 计算机网络第三章:数据链路层
  14. 吴伯凡-认知方法论-如何做到真正的反思
  15. 三轮全向轮底盘SLAM挖坑系列-简介
  16. 卸载百度软件修复服务器,快速修复win7系统笔记本卸载百度软件中心助手的解决教程...
  17. Java基础 快速学习(一)
  18. 艺赛旗RPA 网页处理系列(三):网页检查 / 审查小技巧
  19. HTTPS IP直连问题小结
  20. 为什么会有缓冲区溢出攻击专栏

热门文章

  1. 走进FileNet CE-了解ECM(企业内容管理)
  2. linux /var目录空间清理以及清理后不释放解决
  3. 锁相环(PLL: Phase-locked loop)
  4. The King’s Ups and Downs (线性DP)
  5. LVDS接口分类与数据格式
  6. IOS SDK的架构
  7. win10系统wsappx占用内存高,电脑没法操作
  8. 机器学习之数学系列(二)梯度下降法(参数更新公式的由来)
  9. fastclick-源码解析
  10. 关于浏览器查看网页中文乱码问题