package com.wdcloud.monitoring.common;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List; import com.wdcloud.monitoring.Model.WeekInfoModel; public class DateUtils { //是否打印日志
private static boolean isLog = false; /**
* 获取本月周次和日期时间段信息
*
* @return
*/
public static List<WeekInfoModel> getThisMonthWeekDate() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<WeekInfoModel> list = new ArrayList<WeekInfoModel>(); // 1 获取本月的第一天
Date firstDayOfMonth = getFirstDayOfMonth();
Calendar firstDayOfMonthCal = Calendar.getInstance();
firstDayOfMonthCal.setFirstDayOfWeek(Calendar.MONDAY);
firstDayOfMonthCal.setTime(firstDayOfMonth); // 2 获取本月第一周第一天
Date firstWeekFirstDay = getFirstDayOfFirstWeekOfMonth();
Calendar firstWeekFirstDayCal = Calendar.getInstance();
firstWeekFirstDayCal.setFirstDayOfWeek(Calendar.MONDAY);
firstWeekFirstDayCal.setTime(firstWeekFirstDay); // 3 获取本次周期起止时间
Date sDate = null;// 本月第一周第一天
Date eDate = null;// 本月最后一周最后一天
Calendar sCal = Calendar.getInstance();
Calendar eCal = Calendar.getInstance();
sCal.setFirstDayOfWeek(Calendar.MONDAY);
sCal.setFirstDayOfWeek(Calendar.MONDAY); // 获取本月第一天是周几
int weekDay = firstDayOfMonthCal.get(Calendar.DAY_OF_WEEK) - 1; // 如果是周末,起始时间就是本月第一周第一天
// 否则起始时间就是本月第一周第一天 倒退7天
if (weekDay == 6 || weekDay == 0 || weekDay == 1) {// 周六或周天
sDate = firstWeekFirstDay;
} else {
firstWeekFirstDayCal.getTime();
firstWeekFirstDayCal.add(Calendar.DATE, -7);
sDate = firstWeekFirstDayCal.getTime();
}
sCal.setTime(sDate); // 结束时间是起始时间+34天(5周)
eCal.setTime(sDate);
eDate = eCal.getTime();
eCal.add(Calendar.DATE, 34);
eDate = eCal.getTime(); Date cDate = new Date();
if (cDate.getTime() < eDate.getTime()) {
eDate = cDate;
} if (isLog) {
System.out.println(" 本月统计起止时间是:" + format.format(sDate) + " 到 "
+ format.format(eDate));
System.out
.println("-------------------------------------------------------------------------------");
} // 4 循环得到周次信息
for (int i = 0; i < 5; i++) {// 循环5周次
WeekInfoModel model = new WeekInfoModel();
Calendar endTime = Calendar.getInstance();
endTime.setFirstDayOfWeek(Calendar.MONDAY);
endTime.setTime(sDate);
endTime.set(Calendar.HOUR_OF_DAY, 23);
endTime.set(Calendar.MINUTE, 59);
endTime.set(Calendar.SECOND, 59);
endTime.add(Calendar.DATE, 6); model.setIndexOfWeek(i + 1);
model.setStartDateOfWeek(sDate);
model.setEndDateOfWeek(endTime.getTime()); Date currDate = new Date();
// 如果当前时间在某个周次内
if (sDate.getTime() < currDate.getTime()
&& endTime.getTime().getTime() > currDate.getTime()) {
model.setEndDateOfWeek(currDate); if (isLog) {
System.out.println(" 本月第" + (i + 1) + "周起止时间是:"
+ format.format(sDate) + " 到 "
+ format.format(currDate));
}
list.add(model);
break;
}
if (isLog) {
System.out.println(" 本月第" + (i + 1) + "周起止时间是:"
+ format.format(sDate) + " 到 "
+ format.format(endTime.getTime()));
}
list.add(model); sCal.add(Calendar.DATE, 7);
sDate = sCal.getTime();
} return list;
} // 获取本月第一天
public static Date getFirstDayOfMonth() {
Calendar now = Calendar.getInstance();
// Date date = new Date(2015 - 1900, 12 - 1, 1);
// now.setTime(date);
now.set(Calendar.DATE, now.getActualMinimum(Calendar.DATE));
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
return now.getTime();
} // 获取本月第一周第一天
public static Date getFirstDayOfFirstWeekOfMonth() {
Calendar now = Calendar.getInstance();
now.setFirstDayOfWeek(Calendar.MONDAY);
now.setTime(getFirstDayOfMonth()); int i = 1;
while (now.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
now.set(Calendar.DAY_OF_MONTH, i++);// 设置这个月的星期1 为几号
} Date firstMonday = now.getTime();// 取得日期和时间
String dtStr = new SimpleDateFormat("YYYY-MM-dd").format(firstMonday);// 格式化日期
if (isLog) {
System.out
.println("-------------------------------------------------------------------------------");
System.out.println(" 本月第一周第一天是:" + dtStr);
System.out
.println("-------------------------------------------------------------------------------");
}
return now.getTime();
} /**
* 获取本周周次和日期时间段信息
*
* @return
*/
public static WeekInfoModel getThisWeekDate() { WeekInfoModel model = new WeekInfoModel();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 根据今天的时间获取本周属于本月的第几周
Calendar now = Calendar.getInstance();
now.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 获取本周一的日期 int wom = now.get(Calendar.WEEK_OF_MONTH);
model.setIndexOfWeek(wom); // 根据今天的时间获取本周的开始时间
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
System.out.println("********" + now.get(Calendar.YEAR) + "年"
+ ((now.get(Calendar.MONTH)) + 1) + "月第" + wom + "周星期一的日期是:"
+ df.format(now.getTime()));
model.setStartDateOfWeek(now.getTime()); // 根据今天的时间获取本周的结束时间
now.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
now.add(Calendar.WEEK_OF_YEAR, 1);
now.set(Calendar.HOUR_OF_DAY, 23);
now.set(Calendar.MINUTE, 59);
now.set(Calendar.SECOND, 59);
now.set(Calendar.MILLISECOND, 999);
System.out.println("********" + now.get(Calendar.YEAR) + "年"
+ ((now.get(Calendar.MONTH)) + 1) + "月第" + wom + "周星期天的日期是:"
+ df.format(now.getTime()));
model.setEndDateOfWeek(now.getTime()); return model;
} }

[Java] 获取本月周次和日期时间段信息的更多相关文章

  1. java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti ...

  2. c# 获取一年中的周/根据一年中的第几周获取该周的开始日期与结束日期

    /// <summary> /// 获取一年中的周 /// </summary> /// <param name="dt">日期</par ...

  3. java获取本周 上周的所有日期

    1 根据当前日期获得所在周的日期区间(周一和周日日期) public String getTimeInterval(Date date) { Calendar cal = Calendar.getIn ...

  4. java获取下一天的日期

    我们来看看Java怎么获取下一天的日期: 哈哈哈,开玩笑啦,这个只是个段子. "哪怕悲伤有1000种,快乐有1种就够了."

  5. Java -- 获取当前日期、当月月初日期、月末日期

    Learn From:http://blog.csdn.net/sunhuwh/article/details/39161323 public class CalendarTest { public ...

  6. java获取本月第一天和最后一天

    public class CalendarTest { public static void main(String[] args) { // 获取当前年份.月份.日期 Calendar cale = ...

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

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

  8. java获取近几天的日期

    最近在写接口的时候老遇见从mysql中获取近几天数据的需求,获取日期这块不是很熟,网上看了很多但是代码量都太大,还是问了下别人,写了三行代码就解决了,不多说 贴代码了 下面是我获取近十天,每天的日期: ...

  9. java获取数据库的列名,类型等信息

    当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData 和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据, ...

随机推荐

  1. number_format

    number_format — 以千位分隔符方式格式化一个数字 说明 string number_format ( float $number [, int $decimals = 0 ] ) str ...

  2. wifi漫游测试过程

    欢迎加入Wince技术讨论群QQ#326444254 这个是我最近测试wifi漫游的一些方法,后续会继续更新,让大家了解测试wifi漫游的方法,由于现在支持wince wifi驱动的厂家非常少,所以支 ...

  3. 【leetcode❤python】 20. Valid Parentheses

    #-*- coding: UTF-8 -*-#利用栈的思想#如果输入的左测扩则入栈,如果输入为右侧扩,判断其是否与当前栈顶配对,如果匹配则删除这一对,否则return False#'(', ')', ...

  4. Spring注解【非单例】

    花了至少一整天的时间解决了这个问题,必须记录这个纠结的过程,问题不可怕,思路很绕弯. 为了能说清楚自己的问题,我都用例子来模拟. 我有一个类MyThread是这样的: @Service public ...

  5. Java EE 锚、表格用法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. [SAP ABAP开发技术总结]字符编码与解码、Unicode

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. CUBRID学习笔记 41 sql语法之groupby 等

    cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...

  8. How to run an manually installed program from terminals in Linux / Ubuntu

    Say we have installed qt programs and we want to run qtcreator from the command line. What we need h ...

  9. 从xubuntu-->windows xp

    捣鼓了两个月的ubuntu之后我又乖乖的回到了windows的怀抱,不是抛弃linux而是要适应身边的环境. 身边的板子的驱动基本上都是xp的老一点的还是vista的,让人情何以堪. 我努力克服了,用 ...

  10. Jquery基本、层次选择器

    基本选择器: $("#none").css("background","#bbffaa"); 改变id为none的所有元素的背景色 $(&q ...