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

Date util

阅读更多
/**
 * DateUtils.java
 */
package com.aspire.common.util;

import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

/**
 * <p>
 * Title: 日期操作类
 * </p>
 * <p>
 * Description: 完成一些对日期的计算工作
 * </p>
 * <p>
 * Copyright: Copyright (c) 2007
 * </p>
 * <p>
 * Company: aspire technology
 * </p>
 * 
 * @author zengjin
 * @version 1.0.0.0
 * @CheckItem@ NEW-zengjin-20070110-patch001-ADD40 新增
 */
public class DateUtils {

	/**
	 * 显示日期的格式,yyyy-MM-dd
	 */
	public static final String DATE_FORMAT = "yyyy-MM-dd";

	/**
	 * 显示日期的格式,yyyy-MM-dd HH:mm:ss
	 */
	public static final String TIMEF_FORMAT = "yyyy-MM-dd HH:mm:ss";

	/**
	 * 显示日期的格式,yyyy年MM月dd日HH时mm分ss秒
	 */
	public static final String ZHCN_TIME_FORMAT = "yyyy年MM月dd日HH时mm分ss秒";

	/**
	 * 显示日期的格式,yyyyMMddHHmmss
	 */
	public static final String TIME_STR_FORMAT = "yyyyMMddHHmmss";

	/**
	 * 显示日期的格式,yyyyMMdd
	 */
	public static final String DATE_STR_FORMAT = "yyyyMMdd";
    
    /**
     * 显示日期的格式,yyyyMMdd
     */
    public static final String DATE_HH_STR_FORMAT = "yyyy-MM-dd-HH";
    
    public static final String DATE_HH_STR_SSS_FORMAT = "yyyy/MM/dd HH:mm:ss:SSS";
    

	/**
	 * DateFormat,格式:yyyy-MM-dd
	 */
	private static DateFormat dateFormat;

	/**
	 * DateFormat,格式:yyyy-MM-dd HH:mm:ss
	 */
	private static DateFormat dateTimeFormat;

	/**
	 * DateFormat,格式:yyyyMMddHHmmss
	 */
	private static DateFormat dateTimeStrFormat;

	/**
	 * DateFormat,格式:yyyy年MM月dd日HH时mm分ss秒
	 */
	private static DateFormat zhcnDateTimeStrFormat;

	static {
		dateFormat = new SimpleDateFormat(DATE_FORMAT);
		dateTimeFormat = new SimpleDateFormat(TIMEF_FORMAT);
		dateTimeStrFormat = new SimpleDateFormat(TIME_STR_FORMAT);
		zhcnDateTimeStrFormat = new SimpleDateFormat(ZHCN_TIME_FORMAT);
	}

	/**
	 * 获取当前时间在+-n分钟后的字符串时间
	 * 
	 * @param n
	 *            int
	 * @return String
	 */
	public static String getTimebyMinAfter(int n) {
		Calendar now = Calendar.getInstance(TimeZone.getDefault());
		now.add(Calendar.MINUTE, n);
		return (dateTimeFormat.format(now.getTime()));
	}

	/**
	 * 获取当前时间在+-n秒后的字符串时间
	 * 
	 * @param n
	 *            int
	 * @return String
	 */
	public static String getTimebySecAfter(int n) {
		Calendar now = Calendar.getInstance(TimeZone.getDefault());
		now.add(Calendar.SECOND, n);
		return (dateTimeFormat.format(now.getTime()));
	}

	/**
	 * 获取定义的DateFormat格式
	 * 
	 * @param formatStr
	 * @return
	 */
	private static DateFormat getDateFormat(String formatStr) {
		if (formatStr.equalsIgnoreCase(DATE_FORMAT)) {
			return dateFormat;
		} else if (formatStr.equalsIgnoreCase(TIMEF_FORMAT)) {
			return dateTimeFormat;
		} else {
			return new SimpleDateFormat(formatStr);
		}
	}

	/**
	 * 将Date转换成字符串“yyyy-mm-dd hh:mm:ss”的字符串
	 * 
	 * @param date
	 *            日期
	 * @return String 字符串
	 */
	public static String dateToDateString(Date date) {
		return dateToDateString(date, TIMEF_FORMAT);
	}

	/**
	 * 将Date转换成formatStr格式的字符串
	 * 
	 * @param date
	 * @param formatStr
	 * @return
	 */
	public static String dateToDateString(Date date, String formatStr) {
		DateFormat df = getDateFormat(formatStr);
		return df.format(date);
	}

	/**
	 * 将小时数换算成返回以毫秒为单位的时间
	 * 
	 * @param hours
	 * @return
	 */
	public static long getMicroSec(BigDecimal hours) {
		BigDecimal bd;
		bd = hours.multiply(new BigDecimal(3600 * 1000));
		return bd.longValue();
	}

	/**
	 * 获取今天的日期,格式自定
	 * 
	 * @param pattern -
	 *            设定显示格式
	 * @return String - 返回今天的日期
	 */
	public static String getToday(String pattern) {
		Calendar now = Calendar.getInstance(TimeZone.getDefault());
		DateFormat sdf = getDateFormat(pattern);
		sdf.setTimeZone(TimeZone.getDefault());
		return (sdf.format(now.getTime()));
	}

	// 得到系统当前的分钟数,如当前时间是上午12:00,系统当前的分钟数就是12*60
	public static int getCurrentMinutes() {
		Calendar now = Calendar.getInstance(TimeZone.getDefault());
		int iMin = now.get(Calendar.HOUR_OF_DAY) * 60
				+ now.get(Calendar.MINUTE);
		return iMin;
	}

	/**
	 * 获取当前日期时间yyyy年MM月dd日HH时mm分ss秒的形式
	 * 
	 * @return 当前日期时间yyyy年MM月dd日HH时mm分ss秒的形式
	 */
	public static String getCurZhCNDateTime() {
		return dateToDateString(new Date(), ZHCN_TIME_FORMAT);
	}
	/**
	 * 获取当前时间 yyyyMMddHHmmss 的格式
	 * */
	public static String getCurTime24(){
		return dateToDateString(new Date(),TIME_STR_FORMAT);
	}
	/**
	 * @return 得到本月月份 如09
	 */
	public static String getMonth() {
		Calendar now = Calendar.getInstance();
		int month = now.get(Calendar.MONTH) + 1;
		String monStr = String.valueOf(month);

		// 对于10月份以下的月份,加"0"在前面
		if (month < 10)
			monStr = "0" + monStr;
		return monStr;
	}

	/**
	 * 根据失效时间判断是否依然有效
	 * 
	 * @param expireTime
	 *            失效时间的字符串形式,格式要求:yyMMddHHmmss
	 * @return true:失效 false:没有失效
	 * @throws ParseException
	 */
	public static boolean isTimeExpired(String expireTime)
			throws ParseException {
		boolean ret = false;

		// SimpleDateFormat不是线程安全的,所以每次调用new一个新的对象
		Date date = new SimpleDateFormat(TIME_STR_FORMAT).parse(expireTime);
		Calendar expire = Calendar.getInstance();
		expire.setTime(date);
		Calendar now = Calendar.getInstance();
		// 将毫秒字段设为0,保持精度一致性
		now.set(Calendar.MILLISECOND, 0);
		if (now.after(expire)) {
			ret = true;
		}
		return ret;
	}

	/**
	 * 根据开始时间和可用时间计算出失效时间
	 * 
	 * @param startTime
	 *            开始时间
	 * @param availableTime
	 *            有效时长(单位:秒)
	 * @return 失效时间
	 * @throws ParseException
	 */
	public static String getExpireTimeByCalculate(Date startTime,
			int availableTime) {

		Calendar expire = Calendar.getInstance();

		// 设置为开始时间
		expire.setTime(startTime);

		// 开始时间向后有效时长秒得到失效时间
		expire.add(Calendar.SECOND, availableTime);

		// 返回失效时间字符串
		// SimpleDateFormat不是线程安全的,所以每次调用new一个新的对象
		return new SimpleDateFormat(TIME_STR_FORMAT).format(expire.getTime());

	}

	/**
	 * 将Date转换为yyMMddHHmmss的形式
	 * 
	 * @param date
	 * @return 日期的字符串形式,格式:yyMMddHHmmss
	 */
	public static String convertDateToString(Date date) {
		return new SimpleDateFormat(TIME_STR_FORMAT).format(date);
	}

	/**
	 * 将yyMMddHHmmss形式的字符串转换成Date的形式
	 * 
	 * @param date
	 *            yyMMddHHmmss形式的日期字符串
	 * @return Date对象
	 * @throws ParseException
	 */
	public static Date convertStringToDate(String date) throws ParseException {
		return new SimpleDateFormat(TIME_STR_FORMAT).parse(date);
	}

	/**
	 * @param date
	 *            yyyyMMddHHmmss格式的日期字符转换为yyyy年MM月dd日HH时mm分ss秒格式的字符串
	 * @return yyyy年MM月dd日HH时mm分ss秒格式的日期字符串
	 * @throws ParseException
	 */
	public static String convertStringToZhCN(String date) throws ParseException {
		return zhcnDateTimeStrFormat.format(dateTimeStrFormat.parse(date));
	}

	// ### add by xukejun on v1.5.0.0.006 start ###
	/**
	 * 获取昨日日期 返回格式:yyyy-MM-dd
	 */
	public static String getYesterdayDate() {
		// 获取昨日的日期
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DAY_OF_MONTH, -1);
		Date yesterday = cal.getTime();
		return new SimpleDateFormat(DATE_FORMAT).format(yesterday);
	}
	// ### add by xukejun on v1.5.0.0.006 end ###

    
    /**
     * @param dateString yyyy/MM/dd HH:mm:ss
     * @return
     * @throws ParseException
     */
    public static  String convertStringToString(String dateString) throws ParseException{
        
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
         Date  date = sdf.parse(dateString);      
        return convertDateToString(date);
  
    }
    
    
    /**
     * 将yyMMddHHmmss形式的字符串转换成Date的形式
     * 
     * @param date
     *            yyMMddHHmmss形式的日期字符串
     * @return Date对象
     * @throws ParseException
     */
    public static Date convertStringToDate(String date,String formatString) throws ParseException {
        return new SimpleDateFormat(formatString).parse(date);
    }
    
     /** 
       * 获得延迟后的日期 
       * @param src(基于日期)
       * @param count(延迟数)
       * @param type(延迟类型:Y--年;M--月;D--天;H--小时)
       * @return
       * @author x_shengqiang
       * @date 2010-1-4
     */
    public static Date getDelayDate(Date src,int count,String type)throws ParseException{
    	Calendar cal=Calendar.getInstance();
    	cal.setTime(src);
    	if("Y".equals(type)){
    	    cal.add(Calendar.YEAR, count);
    	}else if("M".equals(type)){
    		cal.add(Calendar.MONTH, count);	
    	}else if("D".equals(type)){
    		cal.add(Calendar.DATE, count);
    	}else if("H".equals(type)){
    		cal.add(Calendar.HOUR, count);
    	}
    	return new SimpleDateFormat(DATE_FORMAT).parse((new SimpleDateFormat(DATE_FORMAT).format(cal.getTime())));
    }
     /** 
       * 获取月份第一天 
       * @param src
       * @return
       * @author x_shengqiang
       * @date 2010-1-4
     */
    public static Date getMonthFirstDate(Date src)throws ParseException{
    	Calendar cal=Calendar.getInstance();
    	cal.setTime(src);
    	cal.set(Calendar.DATE, 1);
    	return new SimpleDateFormat(DATE_FORMAT).parse((new SimpleDateFormat(DATE_FORMAT).format(cal.getTime())));
    }
    /** 
     * 获取月份最后一天 
     * @param src
     * @return
     * @author x_shengqiang
     * @date 2010-1-4
   */
    public static Date getLastDayOfMonth(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        cal.roll(Calendar.DAY_OF_MONTH, -1);
        return cal.getTime();
    } 
     /** 
       * 获得yyyy-MM-dd格式的日期 
       * @param src
       * @param pattern
       * @return
       * @author x_shengqiang
       * @date 2010-1-5
     */
    public static Date getPatternDate(String src)throws ParseException{
    	return new SimpleDateFormat(DATE_FORMAT).parse(src);
    }
}

 

分享到:
评论

相关推荐

    Date Util

    《Date Util——深入解析日期工具类》 在Java编程中,日期和时间处理是不可或缺的一部分。"Date Util" 指的是一种常见的日期处理工具类,它提供了方便的方法来操作和格式化日期。本篇文章将深入探讨这个工具类,...

    util.date 和 sql.date 相关问题汇总

    java中util.date和sql.date的类型转换问题.帮助大家很完善的了解关于java日期类型和数据库日期类型转换的问题,很值得拥有.

    项目中可能会用到的Util类 如 Date String

    在这个项目中,我们关注的是"Date Util"和"String Util",它们是Java编程中非常重要的两个工具类。 Date Util主要涉及日期和时间的处理。在Java中,日期和时间的处理最初是通过`java.util.Date`和`java.text....

    java_sql_Date与java_util_Date转换

    java_sql_Date与java_util_Date转换

    util包里的Date类转换为sql包里的Date

    本文将详细介绍如何将`java.util.Date`对象转换为`java.sql.Date`对象,这对于那些需要将日期值存储到数据库中的应用程序来说至关重要。 ### 标题:util包里的Date类转换为sql包里的Date #### 了解util包里的Date...

    升级版DateUtil.java(得到几天后的date,根据农历生日计算出年龄)

    升级版DateUtil.java 得到几天后的date,根据农历生日计算出年龄,判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致

    java.util.Date到Json日期

    ### Java.util.Date到JSON日期转换详解 在Java中处理日期并将其转换为JSON格式是常见的需求,尤其是在进行网络传输或存储操作时。本篇文章将详细介绍如何将`java.util.Date`对象转换为符合特定格式的JSON字符串,...

    JS DateUtil工具类

    JS日期工具类,方便大家的使用。后期会持续更新.......

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式.docx

    ### Java.util.Date与Java.sql.Date互转及字符串转换为日期时间格式 #### 一、Java.util.Date与Java.sql.Date的基本概念 在Java编程语言中,处理日期和时间时经常使用到`java.util.Date`和`java.sql.Date`这两个类...

    DateUtil.java 时间日期处理工具类

    包含"yyyy-MM-dd"、"yyyy-MM-dd HH:mm:ss"、"yyyyMMdd"、"yyyyMMddHHmmss"、"yyyy-MM"、...4.Date转String dateToString(Date date, String format); 5.Timestamp转String timestampToString(Timestamp ts)..... 等等

    java.util.Date与java.sql.Date相互转换

    ### Java.util.Date与Java.sql.Date相互转换 #### 知识点概述 在Java开发中,经常需要处理日期和时间相关的操作。Java标准库提供了两个重要的日期类:`java.util.Date` 和 `java.sql.Date`。虽然它们名字相似,但...

    js-date-util:java脚本日期工具类

    `js-date-util` 是一个专为JavaScript设计的日期处理库,它提供了丰富的功能,帮助开发者在JavaScript环境中更方便地操作和格式化日期。这个库特别适用于那些需要在前端或者Node.js环境中进行复杂日期计算和格式化的...

    PKG_DATE_UTIL.zip_PKG DATE_pkg date_日期处理

    `PKG_DATE_UTIL.zip_PKG DATE_pkg date_日期处理`这个压缩包提供了一个专门用于日期处理的工具,名为`PKG_DATE_UTIL`。下面将详细阐述这个工具的主要功能及其在实际应用中的价值。 首先,`PKG_DATE_UTIL`主要关注的...

    java.sql.date与java.util.date.pdf

    Java.sql.Date与Java.util.Date的区别和转换 Java.util.Date和Java.sql.Date是Java中两种不同的日期和时间表示方式,虽然它们都是表示日期和时间,但是它们之间存在着一些重要的区别。 首先,Java.util.Date是Java...

Global site tag (gtag.js) - Google Analytics