⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datetimeutil.java

📁 网上商城代码
💻 JAVA
字号:
package com.fendou.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @title DateTimeUtil
 * @description 日期转换工具
 * @copyright Copyright (c) 2009 www.fendou.com
 * @author fendou
 * @since 2009-2-18
 * @version 1.0 
 */
public class DateTimeUtil {
	
	/**
	 * @description 将毫秒转换为时分秒
	 * @param millSeconds long
	 * @return String
	 */
    public static String convertMillSecondsToHMS(long millSeconds)
    {
        long allSecond = millSeconds / 1000L;
        long hour = allSecond / 3600L;
        long minute = (allSecond - hour * 3600L) / 60L;
        long second = allSecond - hour * 3600L - minute * 60L;
        String retString = "";
        String strHour = String.valueOf(hour);
        if(strHour.length() <= 1)
            strHour = (new StringBuilder()).append("0").append(strHour).toString();
        String strMinute = String.valueOf(minute);
        if(strMinute.length() <= 1)
            strMinute = (new StringBuilder()).append("0").append(strMinute).toString();
        String strSecond = String.valueOf(second);
        if(strSecond.length() <= 1)
            strSecond = (new StringBuilder()).append("0").append(strSecond).toString();
        retString = (new StringBuilder()).append(strHour).append(":").append(strMinute).append(":").append(strSecond).toString();
        return retString;
    }

	
	/**
	 * @description 以指定的条件计算出日期
	 * @param dealLength int
	 * @param addCondition int 0: add by months , 1 :add by hours, 2: add by days, 3:add by minute
	 * @return Date
	 */
	public static Date getDateTime(int dealLength, int addCondition) {
		Date date = null;
		Calendar cal = null;
		try {
			cal = Calendar.getInstance();			
			switch (addCondition) {
			case 0:
				cal.add(Calendar.MONTH, dealLength);
				break;
			case 1:
				cal.add(Calendar.HOUR, dealLength);
				break;
			case 2:
				cal.add(Calendar.HOUR, dealLength * 24);
				break;
			case 3:
				cal.add(Calendar.MINUTE, dealLength);
				break;
			}
			date = cal.getTime();
		} catch (Exception e) {
			System.err.println("���日期处理出错!" + e.toString());
		}
		return date;
	}

	/**
	 * @description 以指定的条件计算出日期
	 * @param dealLength int
	 * @param addCondition int  0: add by months , 1 :add by hours, 2: add by days, 3:add by minute
	 * @return String
	 */
	public static String getDateTimeString(int dealLength, int addCondition) {
		String date = "";
		Calendar cal = null;
		try {
			cal = Calendar.getInstance();
			java.text.SimpleDateFormat simple = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");			
			switch (addCondition) {
			case 0:
				cal.add(Calendar.MONTH, dealLength);
				break;
			case 1:
				cal.add(Calendar.HOUR, dealLength);
				break;
			case 2:
				cal.add(Calendar.HOUR, dealLength * 24);
				break;
			case 3:
				cal.add(Calendar.MINUTE,dealLength);
			}
			date = simple.format(cal.getTime());
		} catch (Exception e) {
			System.err.println("日期处理出错!" + e.toString());
		}
		return date;
	}	
	/**
	 * @description 获得当前日期
	 * @return String
	 */
	public static String now() {
		String strNow = "";
		Calendar cal = null;
		try {
			cal = Calendar.getInstance();
			java.text.SimpleDateFormat simple = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			strNow = simple.format(cal.getTime());
		} catch (Exception e) {
			System.err.println(e.toString());
		}
		return strNow;
	}	
	/**
	 * @description 获得今年之后的年份
	 * @param iLaterYears int
	 * @return String
	 */
	public static String nextYear(int iLaterYears) {
		String strNow = "";
		Calendar cal = null;
		try {
			cal = Calendar.getInstance();
			java.text.SimpleDateFormat simple = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			cal.add(Calendar.YEAR, iLaterYears);
			strNow = simple.format(cal.getTime());
		} catch (Exception e) {
			System.err.println("日期处理出错!" + e.toString());
		}
		return strNow;
	}

	/**
	 * @description 获得一星期开始的日期
	 * @return Date
	 */
	public static Date getWeekStartDate() {
		Calendar calendar = Calendar.getInstance();
		Date firstDateOfWeek;
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
		calendar.add(Calendar.DAY_OF_WEEK, -(dayOfWeek - 1));
		firstDateOfWeek = calendar.getTime();
		calendar.add(Calendar.DAY_OF_WEEK, 6);
		return firstDateOfWeek;
	}

	/**
	 * @description 获得一星期结束的日期
	 * @return Date
	 */
	public static Date getWeekEndDate() {
		Calendar calendar = Calendar.getInstance();
		Date lastDateOfWeek;
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);		
		calendar.add(Calendar.DAY_OF_WEEK, -(dayOfWeek - 1));
		calendar.add(Calendar.DAY_OF_WEEK, 6);
		lastDateOfWeek = calendar.getTime();
		return lastDateOfWeek;
	}
	/**
	 * @description 获得一个月开始的日期
	 * @return Date
	 */
	public static Date getMonthStart() {
		Calendar calendar = Calendar.getInstance();
		Date firstDateOfMonth;
		int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
		calendar.add(Calendar.DAY_OF_MONTH, -(dayOfMonth - 1));
		firstDateOfMonth = calendar.getTime();
		calendar.add(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH) - 1);		
		return firstDateOfMonth;
	}
	/**
	 * @description 获得一个月结束的日期
	 * @return Date
	 */
	public static Date getMonthEndDate() {
		Calendar calendar = Calendar.getInstance();
		Date lastDateOfMonth;
		int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
		calendar.add(Calendar.DAY_OF_MONTH, -(dayOfMonth - 1));
		calendar.add(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH) - 1);
		lastDateOfMonth = calendar.getTime();
		return lastDateOfMonth;
	}

	/**
	 * @description 将日期转换为字符
	 * @param date Date
	 * @return String
	 */
	public static String convertDateToStr(Date date) {
		if (null == date) {
			return "";
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}
	/**
	 * @description 将日期转换为字符
	 * @param date Date
	 * @param pattern String
	 * @return String
	 */
	public static String convertDateToStr(Date date, String pattern) {
		if (null == date) {
			return "";
		}
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(date);
	}
	/**
	 * @description 将字符转换为日期
	 * @param strDate String
	 * @return Date
	 */
	public static Date convertStrToDate(String strDate) {
		if (null == strDate) {
			return null;
		}
		if (strDate.trim().length() == 10) {
			strDate += " 00:00:00";
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return sdf.parse(strDate);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}
	
	/**
	 * @description 将指定格式的字符串转换为日期型
	 * @param strDate String
	 * @param pattern String
	 * @return Date
	 */
	public static Date convertStrToDate(String strDate, String pattern) {
		if (null == strDate) {
			return null;
		}		
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		try {
			return sdf.parse(strDate);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}
	/**
	 * @description 计算俩个日期之间相隔的天数
	 * @param startDate Date
	 * @param endDate Date
	 * @return int
	 */
	public static int gapDate(Date startDate, Date endDate) {
		long beginTime = startDate.getTime();
		long endTime2 = endDate.getTime();
		long betweenDays = (long) ((endTime2 - beginTime) / (1000 * 60 * 60 * 24) + 0.5);
		return (int) betweenDays;
	}

	/**
	 * @description 计算俩个日期之间相隔的小时数
	 * @param startTime Date
	 * @param endDate Date
	 * @return long
	 */
	public static long gapHours(Date startTime, Date endTime) {
		long interval = (endTime.getTime() - startTime.getTime());
		return interval / 1000;
	}

	/**
	 * @description 比较两个日期的顺序
	 * @param strDate1 String
	 * @param strDate2 String
	 * @param pattern String
	 * @return i int
	 * @throws ParseException
	 */
	public static int compareDate(String strDate1, String strDate2, String pattern) throws ParseException {
		int i;
		SimpleDateFormat sf = new SimpleDateFormat(pattern);
		Date dt = sf.parse(strDate1);
		i = dt.compareTo(sf.parse(strDate2));
		return i;
	}
	
	/**
	 * @description 将秒数转换为小时:分钟:秒的格式
	 * @param seconds long
	 * @return String
	 */
	public static String  convertSecondToString(long seconds){
		long lOnLineHour=seconds/3600;
		long lOnLineMinute=(seconds%3600)/60;
		long lOnLineSecond=(seconds%3600)%60;
		String strTime=String.format("%02d:%02d:%02d", lOnLineHour,lOnLineMinute,lOnLineSecond);
		return strTime;
	}
	
	/**
	 * @description 获得指定年指定月份的天数
	 * @param year int
	 * @param month int
	 * @return int
	 */
	public static int   getDaysOfMonth(int year,int month)
	{
		//闰年2月29天,平年2月29天,其他大月31天,小月30天
		//能够被400整除是闰年,能够被4整除,而不能被100整除的,也是闰年
		int nDaysOfMonth=0;
        if((year%400==0)||((year%4==0)&&(year%100!=0)))//闰年
        {
        	if(month==2)
        	{
        		nDaysOfMonth=29;
        	}
        	else
        	{
        		nDaysOfMonth=28;
        	}
        }
        else
        {
        	if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//大月
        	{
        		nDaysOfMonth=31;
        	}
        	else//小月
        	{
        		nDaysOfMonth=30;
        	}
        }
        return nDaysOfMonth;
	}

	
	/**
	 * @title getTotalWeeks
	 * @description 从fromDate开始计算tillDate目前是从fromDate起的第几周
	 * @param startDate Date
	 * @param endDate Date
	 * @return int
	 */
	public  static int getTotalWeeks(Date startDate,Date endDate){
		//一共多少天
		long lTotalDays=(endDate.getTime()-startDate.getTime())/(24*60*60*1000);
		String strTemp=String.valueOf(lTotalDays);  
		int totalDays=Integer.parseInt(strTemp);
		
		//开始时间是星期几
		Calendar calendar=Calendar.getInstance();
		calendar.setTime(startDate);
		int nDayWeekOfStartDate=calendar.get(Calendar.DAY_OF_WEEK);
		if(nDayWeekOfStartDate==1)//sunday
			totalDays-=1;
		if(nDayWeekOfStartDate==2)//monday
			totalDays-=7;
		if(nDayWeekOfStartDate==3)//tuesday
			totalDays-=6;
		if(nDayWeekOfStartDate==4)//wednesday
			totalDays-=5;
		if(nDayWeekOfStartDate==5)//thurday
			totalDays-=4;
		if(nDayWeekOfStartDate==6)//friday
			totalDays-=3;
		if(nDayWeekOfStartDate==7)//saturday
			totalDays-=2;

		int weekIndex=totalDays/7+1;
		if(totalDays%7>0){
			weekIndex+=1;
		}
		return weekIndex;
	}
	/**
	 * @title getWeekStartAndEndDate
	 * @description 获得从指定日期开始的第几周的的开始和结束日期
	 * @param weekDate Date
	 * @param weekIndex int
	 * @return Date[] Date[0] 开始时间 Date[1]结束时间
	 */
	public static Date[] getWeekStartAndEndDate(Date weekDate,int weekIndex){
		Calendar cal = Calendar.getInstance();
		cal.setTime(weekDate);

		if(weekIndex>1)
			cal.add(Calendar.DATE, (weekIndex-1)*7);
		int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
		
		Calendar calFirstDayInThisWeek = (Calendar)cal.clone();
		Calendar calLastDayInThisWeek = (Calendar)cal.clone();

		//换算成中国时间
		if(dayOfWeek==1)//sunday,结束时间即当前时间,开始时间为当前时间-6
		{
			calFirstDayInThisWeek.add(Calendar.DATE, -6);
		}
		else if(dayOfWeek==2)//monday,开始时间为当前时间,结束时间为当前时间+6
		{
			calLastDayInThisWeek.add(Calendar.DATE, 6);
		}
		else if(dayOfWeek==3)//tuesday,开始时间为当前时间-1,结束时间为当前时间+5
		{
			calFirstDayInThisWeek.add(Calendar.DATE, -1);
			calLastDayInThisWeek.add(Calendar.DATE, 5);
		}
		else if(dayOfWeek==4)//wendnesday,开始时间为当前时间-2,结束时间为当前时间+4
		{
			calFirstDayInThisWeek.add(Calendar.DATE, -2);
			calLastDayInThisWeek.add(Calendar.DATE, 4);
		}
		else if(dayOfWeek==5)//tuesday,开始时间为当前时间-3,结束时间为当前时间+3
		{
			calFirstDayInThisWeek.add(Calendar.DATE, -3);
			calLastDayInThisWeek.add(Calendar.DATE, 3);
		}
		else if(dayOfWeek==6)//friday,开始时间为当前时间-4,结束时间为当前时间+2
		{
			calFirstDayInThisWeek.add(Calendar.DATE, -4);
			calLastDayInThisWeek.add(Calendar.DATE, 2);
		}
		else if(dayOfWeek==7)//staurday,开始时间为当前时间-5,结束时间为当前时间+1
		{
			calFirstDayInThisWeek.add(Calendar.DATE, -5);
			calLastDayInThisWeek.add(Calendar.DATE, 1);
		}

		calFirstDayInThisWeek.set(Calendar.HOUR, 0);
		calFirstDayInThisWeek.set(Calendar.MINUTE, 0);
		calFirstDayInThisWeek.set(Calendar.SECOND, 0);
		
		calLastDayInThisWeek.set(Calendar.HOUR, 23);
		calLastDayInThisWeek.set(Calendar.MINUTE, 59);
		calLastDayInThisWeek.set(Calendar.SECOND, 59);
		
		
		Date[] retDate=new Date[2];
		retDate[0]=calFirstDayInThisWeek.getTime();
		retDate[1]=calLastDayInThisWeek.getTime();
		return retDate;
	}
	
	/**
	 * @title  getDateList
	 * @description  获得传入时间范围内的日期列表
	 * @param startDate Date  时间范围开始值 
	 * @param endDate Date    时间范围截止值
	 * @param pattern String    日期串的格式yyyy-MM-dd;MM-dd;MM;dd
	 * @return List(Sting)
	 * @throws Exception
	 */
	public static List<String> getDateList(Date startDate,Date endDate,String pattern) throws Exception{
		List<String> dateList = new ArrayList<String>();
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(startDate);
		while(calendar.getTime().before(endDate)){
			dateList.add(DateTimeUtil.convertDateToStr(calendar.getTime(), pattern));
			calendar.add(Calendar.DATE, 1);
		}
		return dateList;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -