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. UE4编程之C++创建一个FPS工程(一)创建模式&角色&处理输入

    转自:http://blog.csdn.net/u011707076/article/details/44180951 从今天开始,我们一起来学习一下,如何使用C++将一个不带有任何初学者内容的空模板 ...

  2. oracle数据库中提供的5种约束

    约束作用:用来保持数据的完整性,防止无效数据进入到数据库中.oracle数据库中提供的5种约束,都是限定某个列或者列的组合的.1.主键约束(PRIMARY KEY):在一个表中能唯一的标识一行.主键可 ...

  3. Fully differential amplifiers

    Introduction       专业音频工程师通常使用术语“平衡”来指代差分信号传输.这也告知了我们对称的概念,同时它在差分系统中也是非常重要的.在差分系统中,驱动器有平衡的输出,传输线有平衡的 ...

  4. 纯CSS写三角形-border法

    (1)有边框的三角形 我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要 ...

  5. ALV详解:Function ALV(二)

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

  6. Codeforces Round #237 (Div. 2) B题模拟题

    链接:http://codeforces.com/contest/404/problem/B B. Marathon time limit per test 1 second memory limit ...

  7. eclipse 实用快捷键

    Ctrl+E: 弹出输入窗口,可快速返回想返回的目标界面 Ctrl+Shift+O: 快速import包 Ctrl+O:显示类中方法和属性的大纲 Ctrl+1 快速修复 Ctrl+Alt+↓ 复制当前 ...

  8. 创建XML

    //创建XML XElement xelement = new XElement("request", new XElement("head", new XEl ...

  9. Java中的内省

    为什么要学内省? •开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性.   什么是Ja ...

  10. 使用Maven构建Web项目

    现自己在重新操作一下:(使用的是Eclipse JavaEE版 ps:eclipse-jee-indigo-SR1-win32,已经安装好了m2eclipse插件) 1.新建Maven项目 1.1 F ...