`
lizhenbin2010
  • 浏览: 99666 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java取时间的一个类

    博客分类:
  • J2se
 
阅读更多

整理了一下自己开发过程中经常使用到的一个时间类,当做工具类使用

package com.lzb.common;

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

/**
 * 
 * 功能描述:时间操作类
 *
 * @author  lizhenbin
 *
 * <p>修改历史:(修改人,修改时间,修改原因/内容)</p>
 */
public class DateUtil {
	
	public static final Long MILI_SECOND = 1000L;
	public static final Long MILI_MINUTE = MILI_SECOND * 60L;
	public static final Long MILI_HOUR = MILI_MINUTE * 60L;
	public static final Long MILI_DATE = MILI_HOUR * 24L;
	public static final Long MILI_MONTH = MILI_DATE * 30L;
	public static final Long MILI_YEAR = MILI_MONTH * 365L;
	
	public static DateUtil instance = null;
	public DateUtil() {};
	public static synchronized DateUtil getInstance() {
		if(instance == null)
			instance = new DateUtil();
		return instance;
	}
	
	/**
	 * 
	 * 功能描述:获取时间的时间格式字符串
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-31 上午11:11:06</p>
	 *
	 * @param date 要格式化的时间
	 * @param formatType 格式化形式
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public String getDateByStr(Date date, String formatType) {
		isDateCheck(date, formatType);
		DateFormat sdf = new SimpleDateFormat(formatType);
		return sdf.format(date);
	}
	
	/**
	 * 
	 * 功能描述:将时间格式字符串,转换成对应的时间
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-9 下午8:29:53</p>
	 *
	 * @param dateStr 时间格式字符串
	 * @param formatType 格式化类型
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public Date createDateByformateStr(String dateStr, String formatType) {
		isDateCheck(dateStr, formatType);
		DateFormat sdf = new SimpleDateFormat(formatType);
		try {
			return sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 
	 * 功能描述:将时间格式字符串转化为时间类型,只支持完整类型:(yyyy{?}MM{?}dd{?}HH{?}mm{?}ss)
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午1:18:06</p>
	 *
	 * @param dateStr 时间格式字符串
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public Date createDateByformateStr(String dateStr) {
		
		isDateCheck(dateStr);
		List<String> symlist = new ArrayList<String>();
		for(int i=0; i < dateStr.length(); i++) {
			char ch = dateStr.charAt(i);
			if(ch < '0' || ch > '9')
				symlist.add(String.valueOf(ch));
		}
		StringBuffer sb = new StringBuffer();
		sb.append("yyyy" + symlist.get(0) + "MM" + symlist.get(1) + "dd" + symlist.get(2) + 
				  "HH" + symlist.get(3) + "mm" + symlist.get(4) + "ss");
		DateFormat sdf = new SimpleDateFormat(sb.toString());
		try {
			return sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/**
	 * 
	 * 功能描述:获取时间的毫秒数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:09:44</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeMiliSecond(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.MILLISECOND);
	}
	
	/**
	 * 
	 * 功能描述:获取时间的秒数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:17:57</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeSecond(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.SECOND);
	}
	
	/**
	 * 
	 * 功能描述:获取时间的分数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:18:52</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeMinute(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.MINUTE);
	}
	
	/**
	 * 
	 * 功能描述:获取时间的小时数(12小时制)
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:20:17</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTime12Hour(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.HOUR);
	}
	
	/**
	 * 
	 * 功能描述:获取时间的小时数(24小时制)
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:23:39</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTime24Hour(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.HOUR_OF_DAY);
	}
	
	/**
	 * 
	 * 功能描述:获取时间在当前星期的第几天
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:25:09</p>
	 *
	 * @param date
	 * @return 返回星期数,其中: 1表示星期一, ...7表示星期天
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeDateOfWeek(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		int week = calender.get(Calendar.DAY_OF_WEEK) - 1;
		if(week == 0)
			week = 7;
		return week;
	}
	
	/**
	 * 
	 * 功能描述:获取当前星期在当前月份中的第几个星期
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:26:29</p>
	 *
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeWeekOfMonth(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.WEEK_OF_MONTH);
	}
	
	/**
	 * 
	 * 功能描述:获取当前星期在该年中的第几个星期
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:27:42</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int geTimetWeekOfYear(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.WEEK_OF_YEAR);
	}
	
	/**
	 * 
	 * 功能描述:获取当前时间在当月中的第几天
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:29:41</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeDateOfMonth(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.DAY_OF_MONTH);
	}
	
	/**
	 * 
	 * 功能描述:获取当前时间在当年中的第几天
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:30:58</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeDateOfYear(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.DAY_OF_YEAR);
	}
	
	/**
	 * 
	 * 功能描述:获取当前月份
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:32:40</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getTimeMonth(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return (calender.get(Calendar.MONTH) + 1);
	}
	
	/**
	 * 
	 * 功能描述:获取当前年份
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:33:53</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public int getYear(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		return calender.get(Calendar.YEAR);
	}
	
	/**
	 * 
	 * 功能描述:计算两个时间的差值
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-9 下午11:50:19</p>
	 *
	 * @param basetime 基本时间
	 * @param targettime 目标时间
	 * @return 连个时间的差值,单位:毫秒
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeMiliSecond(Date basetime, Date targettime) {
		isDateCheck(basetime, targettime);
		return targettime.getTime() - basetime.getTime();
	}
	
	/**
	 * 
	 * 功能描述:返回两个时间相差的秒数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:42:09</p>
	 *
	 * @param basetime
	 * @param targettime
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeSecond(Date basetime, Date targettime) {
		isDateCheck(basetime, targettime);
		return subTimeMiliSecond(basetime, targettime)/MILI_SECOND;
	}
	
	/**
	 * 
	 * 功能描述:返回两个时间相差的分数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:46:23</p>
	 *
	 * @param basetime
	 * @param targettime
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeMinute(Date basetime, Date targettime) {
		isDateCheck(basetime, targettime);
		return subTimeMiliSecond(basetime, targettime)/MILI_MINUTE;
	}
	
	/**
	 * 
	 * 功能描述:获取两个时间相差的小时数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:47:05</p>
	 *
	 * @param basetime
	 * @param targettime
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeHour(Date basetime, Date targettime) {
		isDateCheck(basetime, targettime);
		return subTimeMiliSecond(basetime, targettime)/MILI_HOUR;
	}
	
	/**
	 * 
	 * 功能描述:获取两个时间相差的天数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:47:50</p>
	 *
	 * @param basetime
	 * @param targettime
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeDate(Date basetime, Date targettime) {
		return subTimeMiliSecond(basetime, targettime)/MILI_DATE;
	}
	
	/**
	 * 
	 * 功能描述:两个时间相差月数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:50:29</p>
	 *
	 * @param basetime
	 * @param targettime
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeMonth(Date basetime, Date targettime) {
		isDateCheck(basetime, targettime);
		return subTimeMiliSecond(basetime, targettime)/MILI_MONTH;
	}
	
	/**
	 * 
	 * 功能描述:两个时间相差年数
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午12:51:17</p>
	 *
	 * @param basetime
	 * @param targettime
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public long subTimeYear(Date basetime, Date targettime) {
		isDateCheck(basetime, targettime);
		return subTimeMiliSecond(basetime, targettime)/MILI_YEAR;
	}
	
	/**
	 * 
	 * 功能描述:获取时间的后一天时间
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午10:57:18</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public Date getNextDate(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		calender.add(calender.DATE, 1);
		return calender.getTime();
	}
	
	/**
	 * 
	 * 功能描述:获取时间的后面几天
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-31 上午11:09:02</p>
	 *
	 * @param date 要计算的时间
	 * @param discount 时间与目标时间的差值
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public Date getNextTime(Date date, int discount) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		calender.add(calender.DATE, discount);
		return calender.getTime();
	}
	
	/**
	 * 
	 * 功能描述:获取前一天
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-31 上午11:25:13</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public Date getBeforeDate(Date date) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		calender.add(calender.DATE, -1);
		return calender.getTime();
	}
	
	/**
	 * 
	 * 功能描述:获取时间的前面几天
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-31 上午11:09:27</p>
	 *
	 * @param date
	 * @param discount
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	public Date getBeforeTime(Date date, int discount) {
		isDateCheck(date);
		Calendar calender = Calendar.getInstance();
		calender.setTime(date);
		calender.add(calender.DATE, -discount);
		return calender.getTime();
	}
	
//	public static void main(String[] args) {
//		
//		DateUtil d = DateUtil.getInstance();
//		System.out.println(d.getBeforeDate(new Date()));
//	}
	
	/**
	 * 
	 * 功能描述:验证时间是否为空
	 *
	 * @author  lizhenbin
	 * <p>创建日期 :2012-5-10 上午1:22:29</p>
	 *
	 * @param date
	 * @return
	 *
	 * <p>修改历史 :(修改人,修改时间,修改原因/内容)</p>
	 */
	private boolean isDateCheck(Date date) {
		if(date==null) {
			System.out.println("Usage: Input Date is Null.");
			return false;
		}
		return true;
	}
	
	private boolean isDateCheck(String str) {
		if(str==null) {
			System.out.println("Usage: Input Str is Null.");
			return false;
		}
		return true;
	}
	
	private boolean isDateCheck(Date base, Date tagert) {
		if(base==null) {
			System.out.println("Usage: Input Base Date is Null.");
			return false;
		}
		if(tagert==null) {
			System.out.println("Usage: Input Tagert Date is Null.");
			return false;
		}
		return true;
	}
	
	private boolean isDateCheck(String base, String tagert) {
		if(base==null) {
			System.out.println("Usage: Input Base Str is Null.");
			return false;
		}
		if(tagert==null) {
			System.out.println("Usage: Input Tagert Tagert is Null.");
			return false;
		}
		return true;
	}
	
	private boolean isDateCheck(Date date, String type) {
		if(date==null) {
			System.out.println("Usage: Input Date is Null.");
			return false;
		}
		if(type==null || type.equals("")) {
			System.out.println("Usage: Input Str is Null.");
			return false;
		}
		return true;
	}
}

 

 

分享到:
评论

相关推荐

    java每半个小时取值

    java循环每半个小时取值,免得每半小时取一次值,代码重复太多

    java获取时间大全

    java获取时间的大全,以及在实际的开发中怎么去操作时间,怎么样去设置时间的格式。

    js和java返回三个月前的时间

    使用js和java的两种方法返回三个月前的具体时间,显示的格式有年月日和年月两种格式。

    java 工具类 获取俩个时间之间相差分钟数 排除周六周日 节假日 精确到分钟数/秒

    网上排除节假日、周六周日 获取相差时间 分为四种情况, 精确到天 此工具类在此基础之上进行优化, 分为俩种情况, 精确到分钟,保留俩位小数 (精确到秒 需自己加工下) 入口方法: getWorkHours

    三个数取最大值.java

    一道简单的java算法题,不是很难,重要的是理解思路! 每次都要写50个字感觉太难了,可能是代码 太幼稚了,以后不发这种简单的了。

    java源码包---java 源码 大量 实例

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Java中封装的全局日期处理工具类

    获取SimpleDateFormat 获取日期中的某数值。如获取月份 增加日期中某类型的某数值。如增加日期 获取精确的日期 判断字符串是否为日期字符串 ...两个时间相差距离中文描述 。 比较两个时间的大小。

    JAVA java工具类大全

    20:MathsTool 取一个int十进制数二进制下的第p位 21:ObjectCopyTool 22:PageVo 分页器 23:PropertyUtils 属性工具类 24:QuerySqlUtil 25:RegexUtils 26:TestClass 28:UploadUtils 文件上传工具 29:UtilTest...

    java中所有取当前系统时间大全

    java中所有取当前系统时间大全 java 系统时间 sysdate

    java 时间转换工具

    1.支持java.sql.Date 与 java.util.Date互转 2.支持java.util.Calendar,java.util.Date,java.sql.Date格式化输出 3.支持字符串转java.util.Date 支持字符串格式: yyyyMMdd yyyyMMddHH yyyyMMddHHmm ...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java源码包4

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    Java获取各种常用时间方法

    获取当天时间 可以方便地修改日期格式 获得当前日期与本周日相差的天数 获得本周一的日期 获得相应周的周六的日期

    java源码包3

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    java日期时间选择

    在一个项目中要是用到swing日期控件,网上找了好久都没有找到现成的。 最后根据老外的java日期选择控件做了一点封装,加上了时间选择。 public static void main(String[] args){ try { JFrame frame = new ...

    java源码包2

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...

    java语言获取文件最后修改的时间

    java语言,一个比较哦简单的获取文件最后修改的时间

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器 Java编写的HTML浏览器源代码,一个很...

    JAVA面试题最全集

    修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被...

Global site tag (gtag.js) - Google Analytics