最近在做一个换电站管理的项目,其中有一个大屏折线图。要求计算近12个月的数据。所以,就需要写一个生成近12个月月份的算法。算法如下。

一:编写生成近12个月月份的算法

二:编写判断当天是否是月初的算法

三:格式化月份

二:算法代码如下

/**
* 获取最近12个月月份
*/
public static List<String> getOneMonth() {
List<String> monthList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
//1号就从上个月开始算
int num = 1;
if (isFirstDayOfMonth(calendar)){
num = 0;
}
calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)+num);
for (int i = 0; i < 12; i++) {
calendar.add(Calendar.MONTH, -1);//1个月前
String month = calendar.get(Calendar.YEAR)+"-"+fillZero(calendar.get(Calendar.MONTH)+1);
monthList.add(month);
}
Collections.reverse(monthList);
return monthList;
}

/**
* 判断今天是否是1号
* @param calendar 日历对象
* @return 是否第一天
*/
public static boolean isFirstDayOfMonth(Calendar calendar){
calendar.setTime(new Date());
calendar.set(Calendar.DATE,calendar.get(Calendar.DATE)+1);
if(calendar.get(Calendar.DAY_OF_MONTH) == 2){
return true;
}else{
return false;
}
}

/**
* 格式化月份
*/
public static String fillZero(int i){
String month = "";
if(i<10){
month = "0" + i;
}else{
month = String.valueOf(i);
}
return month;
}

到此,获取近12个月的教程就结束了。此方法还可以根据实际业务场景动态调整要获取月份范围大小,只需改变getOneMonth()里循环条件的大小即可。

java获取最近12个月月份的更多相关文章

  1. 【转】java获取当前年、月、日 、小时 、分钟、 秒、 毫秒

    public class Test { /** * 英文简写(默认)如:2010-12-01 */ public static String FORMAT_SHORT = "yyyy-MM- ...

  2. java获取本月或某月的第一天和最后一天

    获取某月的第一天和最后一天的日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Ca ...

  3. Java获取当前日期的前一个月,前一天的时间

    Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -); //得到前一天 calendar.add(Cal ...

  4. java获取某段时间内的月份列表

    /**获取两个时间节点之间的月份列表**/ private static List<String> getMonthBetween(String minDate, String maxDa ...

  5. Java获取近7个月的起止时间

    话不多说,直接上代码 public class Test { @org.junit.Test public void tets() { SimpleDateFormat format = new Si ...

  6. PHP获取指定时间的前6个月月份 、获取前6天日期

    //获取前6个月月份 public function to_sex_month(){ $today = input('param.today') ? input('param.today') : da ...

  7. Javascript获取最近若干个月

    整理: 如果需要获取最近若干个月,牵扯到跨年的话,该怎么实现的问题,抽了点时间,代码如下: /**纪元时间获取最近12个月 * * @num 传入获取月的数目 **/ (function getMon ...

  8. Java获取某年某月的第一天

    Java获取某年某月的第一天 1.设计源码 FisrtDayOfMonth.java: /** * @Title:FisrtDayOfMonth.java * @Package:com.you.fre ...

  9. Java获取某年某月的最后一天

    Java获取某年某月的最后一天 1.设计源码 LastDayOfMonth.java: /** * @Title:LastDayOfMonth.java * @Package:com.you.free ...

  10. java获取指定月份有几个星期x,获取指定月份跨了多少个星期

    例如获取2020年5月一共有多少个星期二,一共跨了多少个星期 public class MainTest { public static void main(String[] args) throws ...

随机推荐

  1. <vue 组件 1、组件化基本使用>

    代码结构 组件就是将复杂的功能拆分成简单的块,拆分后的块可以被多处使用. 组件的使用分成三个步骤: 1.创建组件构造器     Vue.extend() 2.注册组件               Vu ...

  2. 【调试】perf和火焰图

    简介 perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu.进程id.运行栈等),利用这 ...

  3. 深度学习基础课:使用Adam算法

    大家好~我开设了"深度学习基础班"的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序 线上课程资料: 本节课录像回放 加QQ群,获得 ...

  4. vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)

    上传文档格式 1 <template> 2 <div> 3 <div class="upload"> 4 <div> 5 <d ...

  5. sipp3.6分支压测方案

    概述 SIP压测工具sipp,免费,开源,功能足够强大,配置灵活,优点多. 本文档介绍sipp工具的常用参数和测试脚本. 环境 centos7.9 sipp v3.6.2_rc1 常用参数 -sf 加 ...

  6. 《IT项目管理知识》出书了,特点:全是干货

    大纲目录,及内容如下.本书属于付费内容

  7. C#查找算法2:插值查找

    插值查找,有序表的一种查找方式.插值查找是根据查找关键字与查找表中最大最小记录关键字比较后的查找方法.插值查找基于二分查找,将查找点的选择改进为自适应选择,提高查找效率. 原理:    (midInd ...

  8. 如何在Typora中跳转到文本内的指定位置?

    1.问题 网上写的使用HTML锚点,在typora并不适用 如 跳转 你好 2.解决 参考链接 https://segmentfault.com/q/1010000018057010 https:// ...

  9. 2023强网拟态crypto-一眼看出

    1.题目信息 一眼看穿 查看代码  from Crypto.Util.number import * from secret import flag import gmpy2 flag=b'' r = ...

  10. CSS - 设置自动等比例缩放

    img {     width: 100vw;     height: 100vh;     object-fit: cover;  }