项目经验:自己写的根据时段得到日期的CalendarUtil

本文介绍了一个使用CalendarUtil类实现的工具,用于根据前端页面返回的日期计算最近一天、最近一星期、最近一月、最近一年的时间。通过该工具可以方便地获取不同时间段的开始时间,有助于进行水质评价的统计工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做水质评价统计的时候,根据前台页面返回的最近一天、最近一星期、最近一月、最近一年计算出日期。

统计时段select控件:

 

CalendarUtil类代码:

package com.richway.waterevaluate.util;

import java.util.Calendar;
import java.util.Date;

/**
 * @author lej
 *时间处理工具
 * 2014-5-30下午1:43:02
 */
public class CalendarUtil {
	
	
	/**
	 * 得到当天的0:0:0:000
	 */
	public static Date getTodayStart(){
		Calendar calendar = Calendar.getInstance();  
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime(); 
	}
	
	/**
	 * 得到当天第二天的0:0:0:000
	 */
	public static Date getTomorrowStart(){
		Calendar calendar = Calendar.getInstance();  
		calendar.add(Calendar.DAY_OF_MONTH, 1);
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime(); 
	}
	
	/**
	 * 得到当天所在的星期的第一天的0:0:0:000
	 */
	public static Date getThisWeekStart(){
		Calendar calendar = Calendar.getInstance();  
		// 直接取周一
		calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);    
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime();
	}
	
	/**
	 * 得到当天所在的星期的下一个星期第一天的0:0:0:000
	 */
	public static Date getNextWeekStart(){
		Calendar calendar = Calendar.getInstance();  
		// 取下周
		calendar.add(Calendar.WEEK_OF_YEAR, 1);
		// 取下周一
		calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime();
	}
	
	/**
	 * 得到当天所在的月份的第一天的0:0:0:000
	 */
	public static Date getThisMonthStart(){
		Calendar calendar = Calendar.getInstance();  
		// 得到当天是这月的第几天
		int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
		// 减去dayOfMonth,得到第一天的日期,因为Calendar用0代表每月的第一天,所以要减一
		calendar.add(Calendar.DAY_OF_MONTH, -(dayOfMonth-1));
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime();
	}
	
	/**
	 * 得到当天所在的月份的下一个月第一天的0:0:0:000
	 */
	public static Date getNextMonthStart(){
		Calendar calendar = Calendar.getInstance();  
		// 得到当天是这月的第几天
		int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
		// 减去dayOfMonth,得到第一天的日期,因为Calendar用0代表每月的第一天,所以要减一
		calendar.add(Calendar.DAY_OF_MONTH, -(dayOfMonth-1));
		//得到下一个月
		calendar.add(Calendar.MONTH, 1);
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime();
	}
	
	/**
	 * 得到当天所在的年份的第一天的0:0:0:000
	 */
	public static Date getThisYearStart(){
		Calendar calendar = Calendar.getInstance();  
		// 得到当天是今年的第几天
		int dayOfYEAR = calendar.get(Calendar.DAY_OF_YEAR);
		// 减去dayOfYEAR,得到第一天的日期,因为Calendar用0代表每月的第一天,所以要减一
		calendar.add(Calendar.DAY_OF_YEAR, -(dayOfYEAR-1));
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime();
	}
	
	/**
	 * 得到当天所在的年份的下一年第一天的0:0:0:000
	 */
	public static Date getNextYearStart(){
		Calendar calendar = Calendar.getInstance();  
		// 得到当天是今年的第几天
		int dayOfYEAR = calendar.get(Calendar.DAY_OF_YEAR);
		// 减去dayOfYEAR,得到第一天的日期,因为Calendar用0代表每月的第一天,所以要减一
		calendar.add(Calendar.DAY_OF_YEAR, -(dayOfYEAR-1));
		//得到下一个年
		calendar.add(Calendar.YEAR, 1);
		//将小时至0  
		calendar.set(Calendar.HOUR_OF_DAY, 0);  
		//将分钟至0  
		calendar.set(Calendar.MINUTE, 0);  
		//将秒至0  
		calendar.set(Calendar.SECOND,0);  
		//将毫秒至0  
		calendar.set(Calendar.MILLISECOND, 0);
		return calendar.getTime();
	}
	
	/**
	 * 得到两个时间对应年份的间隔 
	 */
	public static int getYearsBetween(Date startTime,Date endTime){
		Calendar calendar = Calendar.getInstance();  
		calendar.setTime(startTime);
		int year1 = calendar.get(Calendar.YEAR);    //获取年
		calendar.setTime(endTime);
		int year2 = calendar.get(Calendar.YEAR);    //获取年
		int between = year2-year1;
		return between;
	}
	
//	当天开始Fri May 30 00:00:00 CST 2014
//	第二天开始Sat May 31 00:00:00 CST 2014
//	星期开始Mon May 26 00:00:00 CST 2014
//	下星期开始Mon Jun 02 00:00:00 CST 2014
//	当月开始Thu May 01 00:00:00 CST 2014
//	下月开始Sun Jun 01 00:00:00 CST 2014
//	当年开始Wed Jan 01 00:00:00 CST 2014
//	下年开始Thu Jan 01 00:00:00 CST 2015
	

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值