java把一段时间分成周,月,季度,年的时间段
package com.mq.test.activeMQ; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; public class TimeDateUtils { public static final String YYYYMMDD = "yyyy-MM-dd";
public static final String YYYYMMDD_ZH = "yyyyMMdd";
public static final int FIRST_DAY_OF_WEEK = Calendar.MONDAY;
public static final String YYYYMM = "yyyy-MM"; public static void main(String args[]) throws ParseException {
String str_begin = "2018-01-15";
String str_end = "2020-07-01";
getQuarter(str_begin,str_end);
//getMonths(str_begin, str_end) ;
//getYears(str_begin, str_end) ;
}
private static void getYears(String begins, String ends) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date begin = new Date();
Date end = new Date();
try {
begin = sdf.parse(begins);
end = sdf.parse(ends);
} catch (ParseException e) {
System.out.println("日期输入格式不对");
return;
}
Calendar cal_begin = Calendar.getInstance();
cal_begin.setTime(begin);
Calendar cal_end = Calendar.getInstance();
cal_end.setTime(end);
while (true) { if (cal_begin.get(Calendar.YEAR) == cal_end.get(Calendar.YEAR)) {
System.out.println(sdf.format(cal_begin.getTime())+"~"+sdf.format(cal_end.getTime()));
break;
}else{
String str_begin = sdf.format(cal_begin.getTime());
String str_end = getMonthEnd(cal_begin.getTime());
int years=getYear(str_begin);
String year=years+"-12"+"-31";
System.out.println(str_begin+"~"+year);
cal_begin.add(Calendar.YEAR, );
cal_begin.set(Calendar.DAY_OF_YEAR, ); } } } private static void getQuarter(String begins, String ends) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date begin = new Date();
Date end = new Date();
try {
begin = sdf.parse(begins);
end = sdf.parse(ends);
} catch (ParseException e) {
System.out.println("日期输入格式不对");
return;
}
Calendar cal_begin = Calendar.getInstance();
cal_begin.setTime(begin);
Calendar cal_end = Calendar.getInstance();
cal_end.setTime(end);
while (true) { String str_begin = sdf.format(cal_begin.getTime());
String str_end = getMonthEnd(cal_begin.getTime());
Date begin_date = parseDate(str_end);
Date end_date = parseDate(str_end);
String Quarter_begin=formatDate(getFirstDateOfSeason(begin_date));
String Quarter_end=formatDate(getLastDateOfSeason(end_date));
Date Quarter_begin_date = parseDate(Quarter_begin);
Date Quarter_end_date = parseDate(Quarter_end); if(Quarter_end_date.getTime()==end_date.getTime()){ if(Quarter_begin_date.getTime()<=begin.getTime()){
Quarter_begin=begins;
}
if(Quarter_end_date.getTime()>=end.getTime()){
Quarter_end=ends;
}
System.out.println(Quarter_begin+"~"+Quarter_end);
if (end.getTime() <=end_date.getTime()) {
break;
}
}else if(Quarter_begin_date.getTime()==begin_date.getTime()){
if(Quarter_begin_date.getTime()<=begin.getTime()){
Quarter_begin=begins;
}
if(Quarter_end_date.getTime()>=end.getTime()){
Quarter_end=ends;
}
System.out.println(Quarter_begin+"~"+Quarter_end);
} cal_begin.add(Calendar.MONTH, );
cal_begin.set(Calendar.DAY_OF_MONTH, );
} } private static void getMonths(String begins, String ends) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date begin = new Date();
Date end = new Date();
try {
begin = sdf.parse(begins);
end = sdf.parse(ends);
} catch (ParseException e) {
System.out.println("日期输入格式不对");
return;
} Calendar cal_begin = Calendar.getInstance();
cal_begin.setTime(begin);
Calendar cal_end = Calendar.getInstance();
cal_end.setTime(end);
while (true) {
if (cal_begin.get(Calendar.YEAR) == cal_end.get(Calendar.YEAR)&& cal_begin.get(Calendar.MONTH) == cal_end.get(Calendar.MONTH)) {
System.out.println(sdf.format(cal_begin.getTime())+"~"+sdf.format(cal_end.getTime()));
break;
}
String str_begin = sdf.format(cal_begin.getTime());
String str_end = getMonthEnd(cal_begin.getTime());
System.out.println(str_begin+"~"+str_end);
cal_begin.add(Calendar.MONTH, );
cal_begin.set(Calendar.DAY_OF_MONTH, );
} }
private static void getWeeks(String begins, String ends) throws ParseException {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdw = new SimpleDateFormat("E");
String begin_date =begins;
String end_date =ends;
//String begin_date_fm = begin_date.substring(0, 4) + "-" + begin_date.substring(4,6) + "-" + begin_date.substring(6,8);
// String end_date_fm = end_date.substring(0, 4) + "-" + end_date.substring(4,6) + "-" + end_date.substring(6,8);
String begin_date_fm = begins;
String end_date_fm = ends;
Date b = null;
Date e = null;
try {
b = sd.parse(begin_date_fm);
e = sd.parse(end_date_fm);
} catch (ParseException ee) {
ee.printStackTrace();
}
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(b);
Date time = b;
String year = begin_date_fm.split("-")[];
String mon = Integer.parseInt(begin_date_fm.split("-")[])<?begin_date_fm.split("-")[]:begin_date_fm.split("-")[];
String day = Integer.parseInt(begin_date_fm.split("-")[])<?begin_date_fm.split("-")[]:begin_date_fm.split("-")[];
String timeb = year+mon+day;
String timee = null;
if(begin_date==end_date){
System.out.println(begin_date+"~"+end_date);
}else{
while(time.getTime()<=e.getTime()){
rightNow.add(Calendar.DAY_OF_YEAR,);
time = sd.parse(sd.format(rightNow.getTime()));
if(time.getTime()>e.getTime()){break;}
String timew = sdw.format(time);
if(("星期一").equals(timew)){
timeb = (sd.format(time)).replaceAll("-", "");
}
if(("星期日").equals(timew) || ("星期七").equals(timew) || time.getTime() == e.getTime()){
timee = (sd.format(time)).replaceAll("-", "");
String begindate=fomaToDatas(timeb);
String enddate=fomaToDatas(timee);
System.out.println(begindate+"~"+enddate);
}
} }
} public static String fomaToDatas(String data){
DateFormat fmt=new SimpleDateFormat("yyyyMMdd");
try {
Date parse=fmt.parse(data);
DateFormat fmt2=new SimpleDateFormat("yyyy-MM-dd");
return fmt2.format(parse);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} } /**
* 日期解析
*
* @param strDate
* @param pattern
* @return
*/
public static Date parseDate(String strDate, String pattern) {
Date date = null;
try {
if (pattern == null) {
pattern = YYYYMMDD;
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
date = format.parse(strDate);
} catch (Exception e) { }
return date;
}
public static int getYear(String date) throws ParseException {
Calendar c = Calendar.getInstance();
c.setTime(parseDate(date));
int year = c.get(Calendar.YEAR);
return year;
}
public String getYearMonth (Date date) {
return formatDateByFormat(date, "yyyy-MM") ;
}
/**
* 取得指定月份的第一天
*
* @param strdate
* String
* @return String
*/
public String getMonthBegin(Date date) {
return formatDateByFormat(date, "yyyy-MM") + "-01";
} /**
* 取得指定月份的最后一天
*
* @param strdate
* String
* @return String
*/
public static String getMonthEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, );
calendar.set(Calendar.DAY_OF_MONTH, );
calendar.add(Calendar.DAY_OF_YEAR, -);
return formatDateByFormat(calendar.getTime(), "yyyy-MM-dd");
}
/**
* 以指定的格式来格式化日期
*
* @param date
* Date
* @param format
* String
* @return String
*/
public static String formatDateByFormat(Date date, String format) {
String result = "";
if (date != null) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
result = sdf.format(date);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return result;
}
/**
*
* @param strDate
* @return
*/
public static Date parseDate(String strDate) {
return parseDate(strDate, null);
} /**
* format date
*
* @param date
* @return
*/
public static String formatDate(Date date) {
return formatDate(date, null);
} /**
* format date
*
* @param date
* @param pattern
* @return
*/
public static String formatDate(Date date, String pattern) {
String strDate = null;
try {
if (pattern == null) {
pattern = YYYYMMDD;
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
strDate = format.format(date);
} catch (Exception e) { }
return strDate;
} /**
* 取得日期:年
*
* @param date
* @return
*/
public static int getYear(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int year = c.get(Calendar.YEAR);
return year;
} /**
* 取得日期:年
*
* @param date
* @return
*/
public static int getMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
return month + ;
} /**
* 取得日期:年
*
* @param date
* @return
*/
public static int getDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int da = c.get(Calendar.DAY_OF_MONTH);
return da;
} /**
* 取得当天日期是周几
*
* @param date
* @return
*/
public static int getWeekDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int week_of_year = c.get(Calendar.DAY_OF_WEEK);
return week_of_year - ;
} /**
* 取得一年的第几周
*
* @param date
* @return
*/
public static int getWeekOfYear(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int week_of_year = c.get(Calendar.WEEK_OF_YEAR);
return week_of_year;
} /**
* getWeekBeginAndEndDate
*
* @param date
* @param pattern
* @return
*/
public static String getWeekBeginAndEndDate(Date date, String pattern) {
Date monday = getMondayOfWeek(date);
Date sunday = getSundayOfWeek(date);
return formatDate(monday, pattern) + " - "
+ formatDate(sunday, pattern);
} /**
* 根据日期取得对应周周一日期
*
* @param date
* @return
*/
public static Date getMondayOfWeek(Date date) {
Calendar monday = Calendar.getInstance();
monday.setTime(date);
monday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
monday.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return monday.getTime();
} /**
* 根据日期取得对应周周日日期
*
* @param date
* @return
*/
public static Date getSundayOfWeek(Date date) {
Calendar sunday = Calendar.getInstance();
sunday.setTime(date);
sunday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);
sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return sunday.getTime();
} /**
* 取得月的剩余天数
*
* @param date
* @return
*/
public static int getRemainDayOfMonth(Date date) {
int dayOfMonth = getDayOfMonth(date);
int day = getPassDayOfMonth(date);
return dayOfMonth - day;
} /**
* 取得月已经过的天数
*
* @param date
* @return
*/
public static int getPassDayOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.DAY_OF_MONTH);
} /**
* 取得月天数
*
* @param date
* @return
*/
public static int getDayOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
} /**
* 取得月第一天
*
* @param date
* @return
*/
public static Date getFirstDateOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
return c.getTime();
} /**
* 取得月最后一天
*
* @param date
* @return
*/
public static Date getLastDateOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
return c.getTime();
} /**
* 取得季度第一天
*
* @param date
* @return
*/
public static Date getFirstDateOfSeason(Date date) {
return getFirstDateOfMonth(getSeasonDate(date)[]);
} /**
* 取得季度最后一天
*
* @param date
* @return
*/
public static Date getLastDateOfSeason(Date date) {
return getLastDateOfMonth(getSeasonDate(date)[]);
} /**
* 取得季度天数
*
* @param date
* @return
*/
public static int getDayOfSeason(Date date) {
int day = ;
Date[] seasonDates = getSeasonDate(date);
for (Date date2 : seasonDates) {
day += getDayOfMonth(date2);
}
return day;
} /**
* 取得季度剩余天数
*
* @param date
* @return
*/
public static int getRemainDayOfSeason(Date date) {
return getDayOfSeason(date) - getPassDayOfSeason(date);
} /**
* 取得季度已过天数
*
* @param date
* @return
*/
public static int getPassDayOfSeason(Date date) {
int day = ; Date[] seasonDates = getSeasonDate(date); Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH); if (month == Calendar.JANUARY || month == Calendar.APRIL
|| month == Calendar.JULY || month == Calendar.OCTOBER) {// 季度第一个月
day = getPassDayOfMonth(seasonDates[]);
} else if (month == Calendar.FEBRUARY || month == Calendar.MAY
|| month == Calendar.AUGUST || month == Calendar.NOVEMBER) {// 季度第二个月
day = getDayOfMonth(seasonDates[])
+ getPassDayOfMonth(seasonDates[]);
} else if (month == Calendar.MARCH || month == Calendar.JUNE
|| month == Calendar.SEPTEMBER || month == Calendar.DECEMBER) {// 季度第三个月
day = getDayOfMonth(seasonDates[]) + getDayOfMonth(seasonDates[])
+ getPassDayOfMonth(seasonDates[]);
}
return day;
} /**
* 取得季度月
*
* @param date
* @return
*/
public static Date[] getSeasonDate(Date date) {
Date[] season = new Date[]; Calendar c = Calendar.getInstance();
c.setTime(date); int nSeason = getSeason(date);
if (nSeason == ) {// 第一季度
c.set(Calendar.MONTH, Calendar.JANUARY);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.FEBRUARY);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.MARCH);
season[] = c.getTime();
} else if (nSeason == ) {// 第二季度
c.set(Calendar.MONTH, Calendar.APRIL);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.MAY);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.JUNE);
season[] = c.getTime();
} else if (nSeason == ) {// 第三季度
c.set(Calendar.MONTH, Calendar.JULY);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.AUGUST);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.SEPTEMBER);
season[] = c.getTime();
} else if (nSeason == ) {// 第四季度
c.set(Calendar.MONTH, Calendar.OCTOBER);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.NOVEMBER);
season[] = c.getTime();
c.set(Calendar.MONTH, Calendar.DECEMBER);
season[] = c.getTime();
}
return season;
} /**
*
* 1 第一季度 2 第二季度 3 第三季度 4 第四季度
*
* @param date
* @return
*/
public static int getSeason(Date date) { int season = ; Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
switch (month) {
case Calendar.JANUARY:
case Calendar.FEBRUARY:
case Calendar.MARCH:
season = ;
break;
case Calendar.APRIL:
case Calendar.MAY:
case Calendar.JUNE:
season = ;
break;
case Calendar.JULY:
case Calendar.AUGUST:
case Calendar.SEPTEMBER:
season = ;
break;
case Calendar.OCTOBER:
case Calendar.NOVEMBER:
case Calendar.DECEMBER:
season = ;
break;
default:
break;
}
return season;
} }
java把一段时间分成周,月,季度,年的时间段的更多相关文章
- sql把一段时间分割成周,月,季度,年的时间段
--本周 select TO_CHAR(CREATE_DATE ,'yyyy-MM-dd')as NEW_DATE , TO_CHAR(trunc(CREATE_DATE, ,'yyyy-MM-dd' ...
- 专访黄勇:Java在未来的很长一段时间仍是主流(把老板当情人,把同事当小孩,把客户当病人)
url:http://www.csdn.net/article/2015-09-06/2825621 2015-09-06 13:18 摘要:本文采访了现任阿里巴巴公司系统架构师黄勇,从事近十年的Ja ...
- JAVA中实现让程序等待一段时间的方法
JAVA中想让代码等待一段时间再继续执行,可以通过让当前线程睡眠一段时间的方式. 方法一:通过线程的sleep方法. Thread.currentThread().sleep(1000); 在需要程序 ...
- 这段时间对c#和java的感受
这段时间对c#和java的感受 虽然很多书上说语法相似,但实际这是一个接近于门外汉的看法 真正的不同是 c#对更贴近系统API, 而java倡导跨平台 因而c#语法关键字更多,更细, 而ja ...
- java linux ImageIO 验证码在一段时间以后出不来 问题总结
最近在测试上布署的项目经常性的出现验证码过了一段时间以后出不来的情况,耐心找了一下,最后在上级的指导下发现了报错,其实说真的,我自己也找到了这个报错,只是没有当一回事.因为这个验证码的东西不是我写的, ...
- 记录这段时间java编程的小知识点
记录这段时间java编程的小知识点 eclipse项目导入中文乱码 eclipse左侧目录结构变动 eclipse代码段左右移动 按tal键,是整体右移. 按shift table 同时按,是整体左 ...
- Java如何暂停线程一段时间?
在Java编程中,如何暂停线程一段时间? 以下示例显示如何通过创建sleepThread()方法来暂停线程一段时间. package com.yiibai; public class Suspendi ...
- 如何在Sql Server中读取最近一段时间的记录,比如取最近3天的或最近3个月的记录。
如何在Sql Server中读取最近一段时间的记录,比如取最近3天的或最近3个月的记录. 主要用到DATEADD函数,下面是详细语句 取最近3天 select * from 表名where rq> ...
- java程序运行一段时间之后停止
原创文章,未经作者允许,禁止转载!!!!!!! 如何用java是一段代码运行一段时间之后自动停止运行? 就拿打印随机函数的代码来做例子吧,让程序随机打印1-10的数字,打印十秒钟后停止打印: publ ...
随机推荐
- PyCharm 占用过大 C 盘空间,system 配置文件迁移
随着 PyCharm 的持续使用,对应 C:\Users\<username>\.PyCharm<2018.3> 下的文件大小会持续增大,且通常为 system 文件夹下的内容 ...
- laravel 中将一对多关联查询的结果去重处理
先交代下数据表结构 主表(订单表)order数据 ord_id order_sn 1 EX2019100123458 其中主键为order_id(订单id) 子表(门票表)order_item数据 o ...
- 使用js解决response.sendRedirect("...")重定向URL之后出现跨域问题
背景: 本系统与门户系统单点登录时候,需要重定向到门户系统的登录页面,可是如果长时间没有操作的话,session会话失效,就需要跳转到登录页面. 所以在使用 response.sendRedirect ...
- LInux设置tomcat端口为80
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ...
- Vue路由嵌套和命名视图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 流程控制 if----else
流程控制: 对PHP程序执行的过程进行控制! PHP有哪些手段对程序执行过程进行控制!一.顺序执行 自上而下的执行即可! 对这个执行过程没有控制!二.分支执行 分支执行可以根据条件是否满足来选择执行某 ...
- Tornado框架 源码基本分析
在python2 的环境中 pip install tornado==1.2.1 1.2.1版本Tornado源码少,利于了解. import tornado.ioloop import tornad ...
- JavaScript函数封装调用
举个列子:我们在写前端页面,经常会使用到Jquery文本框内容,来判断一下输入值是否符合,常见的写法: <script> function test(){ $("#ID" ...
- K8S 1.12大特性最快最深度解析:Kubernetes CSI Snapshot(下)
Kubernetes CSI Snapshot(下篇) 目标目前在Kuberentes中,卷插件仅支持配置空的存储卷.随着新的存储功能(包括卷快照和卷克隆)的提出,因此需要支持配置卷时数据填充以.例 ...
- Luogu P1062 数列
Luogu P1062 数列 题目说: 把所有$k$的方幂及所有有限个互不相等的$k$的方幂之和构成一个递增的序列. 这就是说,每一个$k$的方幂只能有或没有. 有为$0$,没有为$1$. 所以这些数 ...