[Java] 获取本月周次和日期时间段信息
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] 获取本月周次和日期时间段信息的更多相关文章
- java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti ...
- c# 获取一年中的周/根据一年中的第几周获取该周的开始日期与结束日期
/// <summary> /// 获取一年中的周 /// </summary> /// <param name="dt">日期</par ...
- java获取本周 上周的所有日期
1 根据当前日期获得所在周的日期区间(周一和周日日期) public String getTimeInterval(Date date) { Calendar cal = Calendar.getIn ...
- java获取下一天的日期
我们来看看Java怎么获取下一天的日期: 哈哈哈,开玩笑啦,这个只是个段子. "哪怕悲伤有1000种,快乐有1种就够了."
- Java -- 获取当前日期、当月月初日期、月末日期
Learn From:http://blog.csdn.net/sunhuwh/article/details/39161323 public class CalendarTest { public ...
- java获取本月第一天和最后一天
public class CalendarTest { public static void main(String[] args) { // 获取当前年份.月份.日期 Calendar cale = ...
- java获取本月或某月的第一天和最后一天
获取某月的第一天和最后一天的日期 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Ca ...
- java获取近几天的日期
最近在写接口的时候老遇见从mysql中获取近几天数据的需求,获取日期这块不是很熟,网上看了很多但是代码量都太大,还是问了下别人,写了三行代码就解决了,不多说 贴代码了 下面是我获取近十天,每天的日期: ...
- java获取数据库的列名,类型等信息
当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData 和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据, ...
随机推荐
- number_format
number_format — 以千位分隔符方式格式化一个数字 说明 string number_format ( float $number [, int $decimals = 0 ] ) str ...
- wifi漫游测试过程
欢迎加入Wince技术讨论群QQ#326444254 这个是我最近测试wifi漫游的一些方法,后续会继续更新,让大家了解测试wifi漫游的方法,由于现在支持wince wifi驱动的厂家非常少,所以支 ...
- 【leetcode❤python】 20. Valid Parentheses
#-*- coding: UTF-8 -*-#利用栈的思想#如果输入的左测扩则入栈,如果输入为右侧扩,判断其是否与当前栈顶配对,如果匹配则删除这一对,否则return False#'(', ')', ...
- Spring注解【非单例】
花了至少一整天的时间解决了这个问题,必须记录这个纠结的过程,问题不可怕,思路很绕弯. 为了能说清楚自己的问题,我都用例子来模拟. 我有一个类MyThread是这样的: @Service public ...
- Java EE 锚、表格用法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- [SAP ABAP开发技术总结]字符编码与解码、Unicode
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- CUBRID学习笔记 41 sql语法之groupby 等
cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...
- 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 ...
- 从xubuntu-->windows xp
捣鼓了两个月的ubuntu之后我又乖乖的回到了windows的怀抱,不是抛弃linux而是要适应身边的环境. 身边的板子的驱动基本上都是xp的老一点的还是vista的,让人情何以堪. 我努力克服了,用 ...
- Jquery基本、层次选择器
基本选择器: $("#none").css("background","#bbffaa"); 改变id为none的所有元素的背景色 $(&q ...