`

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

    博客分类:
  • 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);
	}

}
分享到:
评论

相关推荐

    广州市交通共用信息平台方案设计说明.doc

    初步设计文件是设计单位提交的核心材料,它需要包含多个方面的内容,如设计书、资格证明、时间与费用估算、系统设计方案、软件功能说明书、项目管理计划及运行建议等。所有这些资料必须是真实可靠的,且要全面地、...

    电信设备-使用分时双工手机系统中计算最佳槽对信元分派的方法及系统.zip

    本文将深入探讨标题为“电信设备-使用分时双工手机系统中计算最佳槽对信元分派的方法及系统”的主题,基于提供的描述和相关文件名,我们主要关注的是如何在TDD系统中优化信元分配以提升通信效率和系统性能。...

    全国计算机等级考试二级C语言上机练习系统

    3. 结构体与共用体:结构体和共用体是C语言中复杂数据类型的代表,系统会讲解如何定义和使用这两种类型,以及它们在内存中的存储方式。 4. 文件操作:考生需要了解如何在C语言中进行文件的读写操作,包括打开、关闭...

    笛卡尔网格生成方法

    然而,在20世纪80年代中期,尽管计算格式和数值方法取得了显著进步,网格生成技术却并未跟上步伐。因此,从那时起,网格生成技术的研究受到了全球计算流体和工业界的高度重视。 进入90年代,非结构网格和自适应...

    多处理器片上系统中实时自适用仲裁器的设计与分析.pdf

    本研究提出的实时动态自适应仲裁器,通过复杂的逻辑判断和动态调整,能根据当前系统负载和任务需求灵活地分配总线带宽,防止处理器的“饥饿”现象,即长时间无法获得资源的情况,从而保障了所有处理器的公平访问权利...

    操作系统习题2(含答案)-推荐文档.doc

    - **作用**: 是操作系统对外的接口,是用户级程序取得操作系统服务的唯一途径。 11. **特权指令** - **定义**: 指指令系统中这样一些指令,如启动设备指令、设置时钟指令、中断屏蔽指令和清内存指令等,这些指令...

    室外消防给水系统PPT学习教案.pptx

    室外消防给水系统是保障公共安全的重要组成部分,主要用于在火灾发生时为消防设备提供水源,以控制火势并进行灭火。以下将详细解释这个系统的关键知识点。 首先,室外消防给水系统的任务是确保通过室外消火栓为消防...

    安徽省调度日志管理系统

    1. **规范化记录**:系统提供统一的记录模板,确保信息的标准化输入。 2. **灵活的字段设置**:用户可以根据实际需要调整表格中的字段,以适应不同的记录需求。 3. **高效的查询功能**:支持多条件组合查询,可以...

    国内外交通信息平台研究现状介绍.docx

    国内外交通信息平台的研究现状是当前智能交通系统的热点话题。美国的 iFlorida 工程和 GCM GATEWAY 旅行信息系统是该领域的代表性工程。iFlorida 工程的主要目标是扩展和集成现有的数据采集和监视系统,收集及共享...

    1820温度测量系统

    综上所述,DS18B20是一款高效且易于使用的温度传感器,通过深入了解其工作原理和编程方法,开发者能够快速构建起自己的温度测量系统,满足各种应用场景的需求。希望本教程能为你的学习和实践带来启示,助你在IT领域...

    笔试系统(二级C语言)

    【C语言二级考试系统】是针对计算机二级C语言考试设计的一款笔试模拟系统,它提供了丰富的模拟试题,帮助考生熟悉考试环境,提升应试能力。在准备C语言二级考试的过程中,理解并掌握C语言的基本概念、语法结构以及...

    计算机二级上机模拟考试系统c语言.rar

    为了有效地利用模拟考试系统,考生应定期进行全真模拟测试,按照考试规定的时间限制完成题目,这样可以提高应对压力的能力,并调整答题速度。同时,系统可能还提供了答案解析和评分标准,帮助考生理解错误所在,从而...

    Linux和windows的对比

    如果 Linux 在嵌入式应用中取得了成功,那么将来就会对台式机市场形成外围的压力。随着 PC 机的控制与网络能力逐步融合到家电和传统设备中去,这一天一定会出现的。微软以下压上的策略(用 Win9x 的市场优势推 Win ...

    某网站统计SA网盟推广优化介绍.ppt

    【某网站统计SA网盟推广优化介绍】 在互联网营销领域,有效的数据分析对于优化推广效果至关重要。...通过深入理解和充分利用这些数据,企业可以不断改进其在线策略,从而在竞争激烈的市场中取得优势。

    计算机二级考试C语言复习资料笔试加机试

    【计算机二级考试C语言复习指南】 C语言是计算机科学领域中一种基础且强大的编程语言,对于准备参加计算机二级考试的考生来...通过系统性的学习和反复的练习,相信考生能够在计算机二级考试C语言部分取得理想的成绩。

    全国计算机等级考试二级C语言考试大纲.pdf

    - 测试方法:了解白盒测试和黑盒测试,能设计测试用例并实施单元测试、集成测试和系统测试。 - 调试技巧:掌握静态和动态调试的基本技巧。 4. **数据库设计基础**: - 数据库基本概念:理解数据库、数据库管理...

    Linux内核阅读笔记

    3. 时钟中断处理:时钟中断服务执行 do_timer() 函数,主要判断当前进程时间片是否用完,如果用完则执行 schedule() 重新调度。如果中断时当前进程正在内核态执行,则不能进行切换。 4. 信号处理:信号处理函数想要...

Global site tag (gtag.js) - Google Analytics