`
齐晓威_518
  • 浏览: 622626 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

JAVA时间操作类

 
阅读更多
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数据库操作类20170703

    本资料"Java数据库操作类20170703"聚焦于利用Java进行数据库交互,并且支持多种类型的数据库,包括Excel、Access、MSSQLServer、MySQL、Oracle以及通过JDBC-ODBC桥连接的其他数据库。它特别强调了使用数据库连接池来...

    java时间操作工具类 DateUtils

    java中常用的时间操作;如日期,时间戳,日历,字符串相互转化;时间差等常用日期功能。

    Java时间类的操作

    我自己写的一个时间组建,主要是计算两个时间段之间的相隔时间 和一个时间与现在时间之间的时间差....

    java操作时间工具类

    在提供的`TimeFormat.java`文件中,可能包含了对这些类的封装和扩展,以提供更加便捷的日期时间操作。例如,可能会有以下功能: 1. 格式化日期时间:提供一个静态方法,接收一个`Date`对象和格式模板字符串,返回...

    java串口操作类

    Java串口操作是Java编程中一个相对专业的领域,主要...总结来说,Java串口操作类主要涉及Java Communications API的使用,包括串口的打开、配置、读写、监听和关闭等操作,是实现Java程序与硬件设备交互的重要手段。

    JAVA中的时间操作

    因此,`java.util.Calendar`类被引入,它是一个抽象类,提供更灵活的日期和时间操作,包括添加、减去日期字段和转换为不同格式的功能。尽管如此,`Calendar`仍然被认为复杂且不易用。 随着Java 8的发布,`java.time...

    Java DateUtil.java日期时间操作类源代码.rar

    Java DateUtil.java日期时间操作类源代码,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法。比如日期格式转换成时间戳、得到格式化后的系统当前日期、转化日期格式"MM/dd/YY、MM....

    Java日期工具类,Java时间工具类,Java时间格式化

    Java提供了多种工具类来帮助开发者处理日期和时间,使得我们可以方便地进行日期计算、格式化以及解析等操作。本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前...

    JAVA日期操作类详细讲解

    本篇内容将深入讲解Java中的日期操作类,这对于Java初学者来说是非常重要的知识点。 首先,我们要了解Java中的基础日期类`java.util.Date`。这个类在早期的Java版本中被广泛使用,但其API设计存在一些问题,例如不...

    java中的时间操作

    ### Java中的时间操作 在Java开发中,时间处理是一项非常重要的功能,特别是在涉及到日期和时间相关的应用程序中。本文将深入探讨Java中关于时间操作的基本概念和技术,并重点介绍四种常见的应用场景:获取当前时间...

    java操作工具类

    9. **反射工具类**: 反射是Java强大的特性之一,反射工具类可以帮助开发者动态地获取和操作类、接口、字段和方法。例如,`ReflectionUtils`可以用来创建对象、调用方法、获取字段值等。 10. **编码解码工具类**: ...

    java操作日期时间工具类

    `Calendar`提供了更灵活的日期时间操作,但API设计复杂,使用起来较为繁琐。 Java 8引入了`java.time`包,这是对日期时间API的重大改进,它包含了一系列新的类,如`LocalDate`、`LocalTime`、`LocalDateTime`、`...

    Java DateHandler时间操作类代码.rar

    Java DateHandler时间操作类代码,进行多种日期时间操作的时候用得上的一个类。比如getWorkDay函数,可用来计算员工的工作天数,如在使用期和离职期该月份的工作日  * 输入(离职日期,-1)可得该月工作天数 时间...

    java日期操作类

    日期操作类 Long转日期 字符串毫秒转日期 格式化日期转换方法,年 月 日 时 分 秒 把格式化的日期补全 把格式化的日期转化为毫秒 获取当天凌晨,夜间整点时间毫秒 校验日期是否合法 得到n天之后的日期 得到n天之后是...

    java数据库操作通用类

    3. 数据库兼容性:通用数据库操作类应尽可能地兼容多种数据库,考虑使用JDBC的兼容层如Apache的DBUtils库,以减少不同数据库之间的差异。 4. 安全性:避免在代码中硬编码数据库凭据,而是使用配置文件,提高系统的...

    java 时间类

    这里,我们将深入探讨Java时间类的重要概念、常见用法以及如何进行日期和时间的操作。 首先,Java中的`java.util.Date`类是最基础的时间类,它代表了自1970年1月1日00:00:00 GMT以来的毫秒数。但是,由于`Date`类...

    java时间操作大集合

    `Calendar` 是一个抽象类,提供了更丰富的日期/时间操作,比如增加或减少日期字段,获取周几、月份等信息。 6. **定时器与倒计时**:虽然标题中提到了倒计时和定时器,但在提供的代码中并没有直接实现。在Java中,...

    java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒

    这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...

    java实现的日期操作类

    标题提到的"java实现的日期操作类"通常指的是使用这些类来完成特定的日期计算任务,如获取星期几或计算未来的日期。 `java.util.Date`是Java早期用来表示日期和时间的类,但它的API设计并不理想,易用性较差。因此...

    Java时间操作

    ### Java时间操作详解 在Java中,时间操作是软件开发中的常见需求,涉及到日期和时间的解析、格式化、计算以及存储。Java提供了多种类库来处理这些需求,包括`java.util.Date`、`java.util.Calendar`、`java.time`...

Global site tag (gtag.js) - Google Analytics