`

提供取得系统时间的所有共用方法

    博客分类:
  • j2se
 
阅读更多
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * <p>Title: 系统时间公共类</p>
 * <li>提供取得系统时间的所有共用方法</li>
 */
public class DateUtils {

	private static Date date;

	private static Calendar CALENDAR = Calendar.getInstance();

	private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat();

	/**  取得当前时间
	 * @return 当前日期(Date)
	 */
	public static Date getCurrentDate() {
		return new Date();
	}

	/** 取得昨天此时的时间
	 * @return 昨天日期(Date)
	 */
	public static Date getYesterdayDate() {
		return new Date(getCurTimeMillis() - 0x5265c00L);
	}
	/** 取得去过i天的时间
	 * @param i 过去时间天数
	 * @return 昨天日期(Date)
	 */
	public static Date getPastdayDate(int i) {
		return new Date(getCurTimeMillis() - 0x5265c00L*i);
	}

	/** 取得当前时间的长整型表示
	 * @return 当前时间(long)
	 */
	public static long getCurTimeMillis() {
		return System.currentTimeMillis();
	}

	/** 取得当前时间的特定表示格式的字符串
	 * @param formatDate 时间格式(如:yyyy/MM/dd hh:mm:ss)
	 * @return 当前时间
	 */
	public static synchronized String getCurFormatDate(String formatDate) {
		date = getCurrentDate();
		simpleDateFormat.applyPattern(formatDate);
		return simpleDateFormat.format(date);
	}

	/** 取得某日期时间的特定表示格式的字符串
	 * @param format 时间格式
	 * @param date 某日期(Date)
	 * @return 某日期的字符串
	 */
	public static synchronized String getDate2Str(String format, Date date) {
		simpleDateFormat.applyPattern(format);
		return simpleDateFormat.format(date);
	}

	/** 将日期转换为长字符串(包含:年-月-日 时:分:秒)
	 * @param date 日期
	 * @return 返回型如:yyyy-MM-dd HH:mm:ss 的字符串
	 */
	public static String getDate2LStr(Date date) {
		return getDate2Str("yyyy-MM-dd HH:mm:ss", date);
	}
	
	/** 将日期转换为长字符串(包含:年/月/日 时:分:秒)
	 * @param date 日期
	 * @return 返回型如:yyyy/MM/dd HH:mm:ss 的字符串
	 */
	public static String getDate2LStr2(Date date) {
		return getDate2Str("yyyy/MM/dd HH:mm:ss", date);
	}
	
	/** 将日期转换为中长字符串(包含:年-月-日 时:分)
	 * @param date 日期
	 * @return 返回型如:yyyy-MM-dd HH:mm 的字符串
	 */
	public static String getDate2MStr(Date date) {
		return getDate2Str("yyyy-MM-dd HH:mm", date);
	}
	
	/** 将日期转换为中长字符串(包含:年/月/日 时:分)
	 * @param date 日期
	 * @return 返回型如:yyyy/MM/dd HH:mm 的字符串
	 */
	public static String getDate2MStr2(Date date) {
		return getDate2Str("yyyy/MM/dd HH:mm", date);
	}
	
	/** 将日期转换为短字符串(包含:年-月-日)
	 * @param date 日期
	 * @return 返回型如:yyyy-MM-dd 的字符串
	 */
	public static String getDate2SStr(Date date) {
		return getDate2Str("yyyy-MM-dd", date);
	}
	
	/** 将日期转换为短字符串(包含:年/月/日)
	 * @param date 日期
	 * @return 返回型如:yyyy/MM/dd 的字符串
	 */
	public static String getDate2SStr2(Date date) {
		return getDate2Str("yyyy/MM/dd", date);
	}

	/** 取得型如:yyyyMMddhhmmss的字符串
	 * @param date
	 * @return 返回型如:yyyyMMddhhmmss 的字符串
	 */
	public static String getDate2All(Date date) {
		return getDate2Str("yyyyMMddhhmmss", date);
	}

	/** 将长整型数据转换为Date后,再转换为型如yyyy-MM-dd HH:mm:ss的长字符串
	 * @param l 表示某日期的长整型数据
	 * @return 日期型的字符串
	 */
	public static String getLong2LStr(long l) {
		date = getLongToDate(l);
		return getDate2LStr(date);
	}

	/** 将长整型数据转换为Date后,再转换为型如yyyy-MM-dd的长字符串
	 * @param l 表示某日期的长整型数据
	 * @return 日期型的字符串
	 */
	public static String getLong2SStr(long l) {
		date = getLongToDate(l);
		return getDate2SStr(date);
	}
	
	/** 将长整型数据转换为Date后,再转换指定格式的字符串
	 * @param l 表示某日期的长整型数据
	 * @param formatDate 指定的日期格式
	 * @return 日期型的字符串
	 */
	public static String getLong2SStr(long l, String formatDate) {
		date = getLongToDate(l);
		simpleDateFormat.applyPattern(formatDate);
		return simpleDateFormat.format(date);
	}

	private static synchronized Date getStrToDate(String format, String str) {
		simpleDateFormat.applyPattern(format);
		ParsePosition parseposition = new ParsePosition(0);
		try {
			return simpleDateFormat.parse(str);
		}
		catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	/** 将某指定的字符串转换为某类型的字符串
	 * @param format 转换格式
	 * @param str 需要转换的字符串
	 * @return 转换后的字符串
	 */
	public static String getStr2Str(String format,String str){
		Date date = getStrToDate(format,str);
		return getDate2Str(format,date);
	}
	
	/** 将某指定的字符串转换为型如:yyyy-MM-dd HH:mm:ss的时间
	 * @param str 将被转换为Date的字符串
	 * @return 转换后的Date
	 */
	public static Date getStr2LDate(String str) {
		return getStrToDate("yyyy-MM-dd HH:mm:ss", str);
	}
	
	/** 将某指定的字符串转换为型如:yyyy/MM/dd HH:mm:ss的时间
	 * @param str 将被转换为Date的字符串
	 * @return 转换后的Date
	 */
	public static Date getStr2LDate2(String str) {
		return getStrToDate("yyyy/MM/dd HH:mm:ss", str);
	}
	
	/** 将某指定的字符串转换为型如:yyyy-MM-dd HH:mm的时间
	 * @param str 将被转换为Date的字符串
	 * @return 转换后的Date
	 */
	public static Date getStr2MDate(String str) {
		return getStrToDate("yyyy-MM-dd HH:mm", str);
	}
	
	/** 将某指定的字符串转换为型如:yyyy/MM/dd HH:mm的时间
	 * @param str 将被转换为Date的字符串
	 * @return 转换后的Date
	 */
	public static Date getStr2MDate2(String str) {
		return getStrToDate("yyyy/MM/dd HH:mm", str);
	}
	
	/** 将某指定的字符串转换为型如:yyyy-MM-dd的时间
	 * @param str 将被转换为Date的字符串
	 * @return 转换后的Date
	 */
	public static Date getStr2SDate(String str) {
		return getStrToDate("yyyy-MM-dd", str);
	}
	
	/** 将某指定的字符串转换为型如:yyyy-MM-dd的时间
	 * @param str 将被转换为Date的字符串
	 * @return 转换后的Date
	 */
	public static Date getStr2SDate2(String str) {
		return getStrToDate("yyyy/MM/dd", str);
	}

	/** 将某长整型数据转换为日期
	 * @param l 长整型数据
	 * @return 转换后的日期
	 */
	public static Date getLongToDate(long l) {
		return new Date(l);
	}

	/** 以分钟的形式表示某长整型数据表示的时间到当前时间的间隔
	 * @param l 长整型数据
	 * @return 相隔的分钟数
	 */
	public static int getOffMinutes(long l) {
		return getOffMinutes(l, getCurTimeMillis());
	}

	/** 以分钟的形式表示两个长整型数表示的时间间隔
	 * @param from 开始的长整型数据
	 * @param to 结束的长整型数据
	 * @return 相隔的分钟数
	 */
	public static int getOffMinutes(long from, long to) {
		return (int) ((to - from) / 60000L);
	}

	/** 以微秒的形式赋值给一个Calendar实例
	 * @param l 用来表示时间的长整型数据
	 */ 
	public static void setCalendar(long l) {
		CALENDAR.clear();
		CALENDAR.setTimeInMillis(l);
	}

	/** 以日期的形式赋值给某Calendar
	 * @param date 指定日期 
	 */ 
	public static void setCalendar(Date date) {
		CALENDAR.clear();
		CALENDAR.setTime(date);
	}

	/** 在此之前要由一个Calendar实例的存在
	 * @return 返回某年
	 */
	public static int getYear() {
		return CALENDAR.get(1);
	}

	/** 在此之前要由一个Calendar实例的存在
	 * @return 返回某月
	 */
	public static int getMonth() {
		return CALENDAR.get(2) + 1;
	}
	
	/** 在此之前要由一个Calendar实例的存在
	 * @return 返回某天
	 */
	public static int getDay() {
		return CALENDAR.get(5);
	}

	/** 在此之前要由一个Calendar实例的存在
	 * @return 返回某小时
	 */
	public static int getHour() {
		return CALENDAR.get(11);
	}

	/** 在此之前要由一个Calendar实例的存在
	 * @return 返回某分钟
	 */
	public static int getMinute() {
		return CALENDAR.get(12);
	}
	
	/** 在此之前要由一个Calendar实例的存在
	 * @return 返回某秒
	 */
	public static int getSecond() {
		return CALENDAR.get(13);
	}

}
分享到:
评论

相关推荐

    智能交通未来展望.docx

    3 广州市的智能交通系统 数据来源: BAYES 2017,05 十五期间,广州市的交通基础设施建设取得了很大的,但是由于受到经济条件、地理位置和环境的约束,在相当长的一段时间内道路智能交通未来展望全文共3页,当前为第...

    无限虚拟股市1.7.2b虚拟版

    5、增加后台股民持股管理功能(可以随意修改股民的持股数量或删除,对于删除或减少的股票将以当前价抛出)。 6、后台重要操作强制写入操作理由功能。 7、前台数据刷新限制功能(刚刚登录或刷新过再次刷新需等待部分...

    3计算机应用基础知识.doc

    自1946年美国研制的第一台电子计算机ENIAC以来,在半个世纪的时间里,计算机的发展 取得了令人瞩目的成就。 计算机从诞生到现在,已走过了60年的发展历程,在这期间,计算机的系统结构不断 发生变化。人们根据...

    计算机应用基础知识.doc

    自1946年美国研制的第一台电子计算机ENIAC以来,在半个世纪的时间里,计算机的发展 取得了令人瞩目的成就。 计算机从诞生到现在,已走过了60年的发展历程,在这期间,计算机的系统结构不断 发生变化。人们根据...

    [C大学教程(第五版)].(美)戴特尔.扫描版.pdf

    本书系统地介绍了四种当今流行的程序设计方法——面向过程、基于对象、面向对象以及泛型编程,内容全面、生动、易懂,作者由浅入深地介绍结构化编程及软件工程的基本概念,从简单的概念到最终完整的语言描述,清晰、...

    软件工程-理论与实践(许家珆)习题答案

    还涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及到这些因素和系统的精确规格说明,以及系统进化之间的关系。 需求分析的基本任务包括: (1) 抽取需求 分析现行系统...

    单片机期末考试题目及答案详解

    在定时器工作方式0下,计数器的宽度为 位,其记数范围为 ,如果系统晶振频率为6MHZ,则最大定时时间为 。 22.利用定时器/计数器产生中断时,应把定时器/计数器设置成 工作状态,当计数器设置成方式0时,记数初值应...

    基于单片机门铃的设计.pdf

    目录 1 总体方案设计 2 AT89S51单片机简介 3 硬件部分设计 3.1单片机系统 3.2电路原理图 3.3 仿真电路图 4 软件部分设计 4.1 程序设计方法 4.2主程序框图 4.3 T0中断程序框图 4.4汇编源程序 5 调试分析 5.1硬件调试 ...

    计算机理论第一章详细透彻 支持格式WORD

    第二代移动通信系统在提供话音和低速数据业务方面已取得了很大成功。例如GSM提供了分组交换和分组传输方式的新数据业务(称为GPRS)。 ((理解))移动通信系统由移动台,基站,移动电话交换中心组成。移动台是...

    计算机应用基础知识.docx

    自1946年美国研制的第一台电子计算机ENIAC以来,在半个世纪的时间里,计算机的发展取得了令人瞩目的成就。 计算机从诞生到现在,已走过了60年的发展历程,在这期间,计算机的系统结构持续发生变化。人们根据计算机所...

    Struts原理、开发及项目实施

    做相应数据库操作,略 */ } } FormBean的产生是为了提供数据给ActionBean,在ActionBean中可以取得FormBean中封装的数据,经相应的逻辑处理后,调用业务方法完成相应业务要求。...

    计算机应用基础知识(2).doc

    自1946年美国研制的第一台电子计算机ENIAC以来,在半个世纪的时间里,计算机的发展 取得了令人瞩目的成就。 计算机从诞生到现在,已走过了60年的发展历程,在这期间,计算机的系统结构不断 发生变化。人们根据...

    会计理论考试题

    A、计算机病毒通常是一段可运行的程序 B、反病毒软件可清除所有病毒 C、加装防病毒卡的微机不会感染病毒 D、病毒不会通过网络传染 14.在Windows98中,如果删除了软盘上的文件,则该文件在Windows98中___A____。 A、...

    Cnetnet多功能留言本 v2.05

    [include]共用include文件 [script]Js文件 [Textchange]字符转换图片文件 [SysCheck]ASP探计文件 Index.asp留言板首页文件 Login.asp管理登陆文件 JsCalling.asp首页调用留言内容文件,使用方法请查看“首页调用留言...

    51单片机C语言编程基础及实例

    同样,输入 一个端口 P2,即是将 P2.7、P2.6 至 P2.0,读入到一个字节的 8 第一节: 第一节:单数码管按键显示 单片机最小系统的硬件原理接线图: 1. 2. 3. 4. 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容 ...

Global site tag (gtag.js) - Google Analytics