[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中提供有两种源数据, ...
随机推荐
- ASP.NET简单登录注册实例
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- jquery append()详解
1 http://www.365mini.com/page/jquery-append.htm 2 http://blog.csdn.net/chaiyining007/article/details ...
- MySQL(四) —— 操作数据表中的记录
插入记录 INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... //法二: ...
- spring引入实体类映射文件
由于spring对hibernate配置文件hibernate.cfg.xml的集成相当好 LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件: mapp ...
- ALV详解:Function ALV(二)
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 2----lua的入门
Lua的标识符 什么是标识符? 标识符就是你给对象,函数等取的名字 区分大小写 首字母可以使字母下划线和美元符号组成 Lua 的保留字 保留字(区分大小写) true false and or not ...
- MongoDB 权限
1.使用mongod 启动后(加入了--auth后操作数据库则需要权限) mongod --dbpath=D:\mongdb\db --logpath=D:\mongodb\log.txt --por ...
- compile,build和execute的区别
一个c程序的生成要经历以下步骤: 1.编写文本代码,生成c或cpp文件,这时候它还是文本的: 2.编译,就是compile,由c编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通 ...
- eclipse查看jdk源码,及反编译查看
jdk中的包: dt.jar是关于运行环境的类库,主要是swing的包 tools.jar是关于一些工具的类库 rt.jar包含了jdk的基础类库,也就是你在java doc里面看到的所有的类的cla ...
- eclipse 技巧
1. eclipse中xml中提示需有xsd文档 如在线eclipse将自动网络获取.xsd 否则 手动本地添加(在xml catalog参数设置选项) 2.当明确实现功能时,可将已有方法抽取成接口, ...