java 给定一个日期期间 返回形如Mar 2015 3/20-3/31的数据
最近一个项目中有个前台对于表头要求:
给定一个日期期间返回形如
Mar 2015 3/20-3/31
Apr 2015 4/1-4/30
这样的月年数据,简单的写了下代码,暂时没想到更好的办法
例如传进来的参数是 "2015-03-20"-"2016-04-08" 这样的形式
分三段处理:
第一段:起始日期的起始日期的月底
第二段:开始和结束月之间的所有月数据
第三段:结束日期的月初到结束日期
public List<String> loadMonthStr(String startDate, String endDate) throws Exception {
List<String> periodList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar cdStart = new GregorianCalendar();
GregorianCalendar cdEnd = new GregorianCalendar();
cdStart.setTime(sdf.parse(startDate));
cdEnd.setTime(sdf.parse(endDate));
sdf = new SimpleDateFormat("MMM yyyy", Locale.US);
int firstStart = cdStart.get(Calendar.DAY_OF_MONTH);
int lastEnd = cdEnd.get(Calendar.DAY_OF_MONTH);
int monthOfYear = cdStart.get(Calendar.MONTH) + 1;
boolean sameYearMonth = false;
String dateStr;
if (cdStart.get(Calendar.MONTH) == cdEnd.get(Calendar.MONTH) && cdStart.get(Calendar.YEAR) == cdEnd.get(Calendar.YEAR)) {
sameYearMonth = true;
}
if (sameYearMonth) {
dateStr = sdf.format(cdStart.getTime()) + " " + monthOfYear + "/" + firstStart + "-" + monthOfYear + "/" + lastEnd;
periodList.add(dateStr);
} else {
dateStr = sdf.format(cdStart.getTime()) + " " + monthOfYear + "/" + cdStart.get(Calendar.DAY_OF_MONTH) + "-"
+ monthOfYear + "/" + cdStart.getMaximum(Calendar.DAY_OF_MONTH);
periodList.add(dateStr);
cdStart.set(Calendar.DAY_OF_MONTH, 1);
cdEnd.set(Calendar.DAY_OF_MONTH, 1);
cdStart.add(Calendar.MONTH, 1);
int startDay = 0;
int endDay = 0;
while (cdStart.compareTo(cdEnd) < 0) {
monthOfYear = cdStart.get(Calendar.MONTH) + 1;
startDay = 1;
endDay = cdStart.getActualMaximum(Calendar.DAY_OF_MONTH);
dateStr = sdf.format(cdStart.getTime()) + " " + monthOfYear + "/" + startDay + "-" + monthOfYear + "/" + endDay;
cdStart.add(Calendar.MONTH, 1);
periodList.add(dateStr);
}
dateStr = sdf.format(cdEnd.getTime()) + " " + (cdEnd.get(Calendar.MONTH) + 1) + "/" + 1 + "-"
+ (cdEnd.get(Calendar.MONTH) + 1) + "/" + lastEnd;
periodList.add(dateStr);
}
return periodList;
}
java 给定一个日期期间 返回形如Mar 2015 3/20-3/31的数据的更多相关文章
- Java判断一个日期是否在下周日期区间
Java实现判断一个日期是否在下周日期区间的方法 /** * 判断输入的日期是否在下周区间 * @return * @author nemowang */ public static boolean ...
- Java -- 给定一个int数组,拼接出最大数值
public class ZhiJieTiaoDong { /* 给定一个数组:组合成最大数值 */ public String szpj(int[] args){ if(null == args | ...
- 使用Java编写一个日期时间封装类
package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...
- js java 给定一个目标值,在一棵树中找是否有两个节点的值之和等于目标值
在leetCode看到一题目 Given a Binary Search Tree and a target number, return true if there exist two elemen ...
- java设定一个日期时间,加几分钟(小时或者天)后得到新的日期
//返回的是字符串型的时间,输入的 //是String day, int x public static String addDateMinut(String day, int x){ SimpleD ...
- Java笔试题:给定一个ReadOnlyClass的对象roc,能否把这个对象的age值改成30?
在Java笔试面试中,经常会遇到代码题,今天我们就来看一则Java代码笔试题. 有如下代码: Class ReadOnlyClass { private Integer age=20; public ...
- 用JAVA写一个函数,功能例如以下: 随意给定一组数, 找出随意数相加之后的结果为35(随意设定)的情况
用JAVA写一个函数.功能例如以下:随意给定一组数,比如{12,60,-8,99,15,35,17,18},找出随意数相加之后的结果为35(随意设定)的情况. 能够递归算法来解: package te ...
- [java大数据面试] 2018年4月百度面试经过+三面算法题:给定一个数组,求和为定值的所有组合.
给定一个数组,求和为定值的所有组合, 这道算法题在leetcode应该算是中等偏下难度, 对三到五年工作经验主要做业务开发的同学来说, 一般较难的也就是这种程度了. 简述经过: 不算hr面,总计四面, ...
- Java中如何判断一个日期字符串是否是指定的格式
判断日期格式是否满足要求 import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date ...
随机推荐
- django-rest-framework之 json web token方式完成用户认证
json web token的介绍:https://blog.csdn.net/kevin_lcq/article/details/74846723 1. 安装 $ pip install djang ...
- 读redux源码总结
redux介绍 redux给我们暴露了这几个方法 { createStore, combineReducers, bindActionCreators, applyMiddleware, compos ...
- TCP主动打开 之 第一次握手-发送SYN
tcp客户端与服务器端建立连接需要经过三次握手过程,本文主要分析客户端主动打开中的第一次握手部分,即客户端发送syn段到服务器端: tcp_v4_connect为发起连接主流程,首先对必要参数进行检查 ...
- HearthBuddy卡牌无法识别
界面上无法识别,提示是 [Unidentified card ID :DAL_010][Unidentified card ID :DAL_415] Unidentified card ID :HER ...
- JDK压缩指针
https://www.cnblogs.com/iceAeterNa/p/4877549.html
- 自定义View绘制简单的圆环的实现
package com.loaderman.mywave; import android.content.Context; import android.graphics.Canvas; import ...
- BFC是什么?有什么作用?
BFC(Block Formatting Context)直译为“块级格式化范围”. 一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: ...
- java 抽取 word,pdf 的四种武器
转自:https://www.ibm.com/developerworks/cn/java/l-java-tips/ 感谢作者发布的文章 用 jacob 其实 jacob 是一个 bridag ...
- 解决 ElementTree 无法处理中文
解决 ElementTree 无法处理中文,UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 76-99: o ...
- AIxoder插件安装及使用
参考:https://www.aixcoder.com/#/Download 右边有快捷导航,查看对应需要的问题 1.下载AIxcoder 2.安装并注册打开 3.给IDE安装 4.验证是否安装成 ...