java 日期处理工具类_java日期处理工具类

本文针对日期处理进行学习使用,主要分为两部分,下面为大家具体介绍一下

第一部分:日期处理基础知识

Date 类

作用:最主要的作用就是获得当前时间

将日期转换为标准格式

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String str = sdf.format(date);

System.out.println(“2015-10-16 14:59:52”);

将String转换为Date类型

String day = "2014-6-5 10:30:30";

SimpleDateFormat d2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date2 = d2.parse(day);

System.out.println(“Thu Jun 05 10:30:30 CST 2014”);

Calendar 类的应用

java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间

Calendar c = Calendar.getInstance();

int year = c.get(Calender.YEAR);

int month= c.get(Calender.MONTH)+1; //获取月份,0表示1月份

int day = c.get(Calender.DAY_OF_MONTH);

int hour= c.get(Calender.HOUR_OF_DAY);

int minute= c.get(Calender.MINUTE);

int second = c.get(Calender.SECOND);

比较2个时间相差的月份

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

DateTime d1 = new DateTime(format.parse("2016-10-31 00:00:00"));

DateTime d2 = new DateTime(format.parse("2015-1-31 00:00:00"));

System.out.println(Math.abs(Months.monthsBetween(d1,d2).getMonths()));

第二部分:日期处理工具类

package com.analysys.website.control;

import java.text.ParseException;

import java.text.ParsePosition;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import org.apache.commons.lang.StringUtils;

import org.apache.log4j.Logger;

/**

* 日期处理工具类

* @author dylan_xu

* @date Mar 11, 2012

* @modified by

* @modified date

* @since JDK1.6

* @see com.util.DateUtil

*/

public class DateUtil {

// ~ Static fields/initializers

// =============================================

private static Logger logger = Logger.getLogger(DateUtil.class);

private static String defaultDatePattern = null;

private static String timePattern = "HH:mm";

private static Calendar cale = Calendar.getInstance();

public static final String TS_FORMAT = DateUtil.getDatePattern() + " HH:mm:ss.S";

/** 日期格式yyyy-MM字符串常量 */

private static final String MONTH_FORMAT = "yyyy-MM";

/** 日期格式yyyy-MM-dd字符串常量 */

private static final String DATE_FORMAT = "yyyy-MM-dd";

/** 日期格式HH:mm:ss字符串常量 */

private static final String HOUR_FORMAT = "HH:mm:ss";

/** 日期格式yyyy-MM-dd HH:mm:ss字符串常量 */

private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

/** 某天开始时分秒字符串常量 00:00:00 */

private static final String DAY_BEGIN_STRING_HHMMSS = " 00:00:00";

/** 某天结束时分秒字符串常量 23:59:59 */

public static final String DAY_END_STRING_HHMMSS = " 23:59:59";

private static SimpleDateFormat sdf_date_format = new SimpleDateFormat(DATE_FORMAT);

private static SimpleDateFormat sdf_hour_format = new SimpleDateFormat(HOUR_FORMAT);

private static SimpleDateFormat sdf_datetime_format = new SimpleDateFormat(DATETIME_FORMAT);

// ~ Methods

// ================================================================

public DateUtil() {

}

/**

* 获得服务器当前日期及时间,以格式为:yyyy-MM-dd HH:mm:ss的日期字符串形式返回

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getDateTime() {

try {

return sdf_datetime_format.format(cale.getTime());

} catch (Exception e) {

logger.debug("DateUtil.getDateTime():" + e.getMessage());

return "";

}

}

/**

* 获得服务器当前日期,以格式为:yyyy-MM-dd的日期字符串形式返回

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getDate() {

try {

return sdf_date_format.format(cale.getTime());

} catch (Exception e) {

logger.debug("DateUtil.getDate():" + e.getMessage());

return "";

}

}

/**

* 获得服务器当前时间,以格式为:HH:mm:ss的日期字符串形式返回

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getTime() {

String temp = " ";

try {

temp += sdf_hour_format.format(cale.getTime());

return temp;

} catch (Exception e) {

logger.debug("DateUtil.getTime():" + e.getMessage());

return "";

}

}

/**

* 统计时开始日期的默认值

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getStartDate() {

try {

return getYear() + "-01-01";

} catch (Exception e) {

logger.debug("DateUtil.getStartDate():" + e.getMessage());

return "";

}

}

/**

* 统计时结束日期的默认值

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getEndDate() {

try {

return getDate();

} catch (Exception e) {

logger.debug("DateUtil.getEndDate():" + e.getMessage());

return "";

}

}

/**

* 获得服务器当前日期的年份

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getYear() {

try {

return String.valueOf(cale.get(Calendar.YEAR));

} catch (Exception e) {

logger.debug("DateUtil.getYear():" + e.getMessage());

return "";

}

}

/**

* 获得服务器当前日期的月份

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getMonth() {

try {

java.text.DecimalFormat df = new java.text.DecimalFormat();

df.applyPattern("00;00");

return df.format((cale.get(Calendar.MONTH) + 1));

} catch (Exception e) {

logger.debug("DateUtil.getMonth():" + e.getMessage());

return "";

}

}

/**

* 获得服务器在当前月中天数

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getDay() {

try {

return String.valueOf(cale.get(Calendar.DAY_OF_MONTH));

} catch (Exception e) {

logger.debug("DateUtil.getDay():" + e.getMessage());

return "";

}

}

/**

* 比较两个日期相差的天数

* @author dylan_xu

* @date Mar 11, 2012

* @param date1

* @param date2

* @return

*/

public static int getMargin(String date1, String date2) {

int margin;

try {

ParsePosition pos = new ParsePosition(0);

ParsePosition pos1 = new ParsePosition(0);

Date dt1 = sdf_date_format.parse(date1, pos);

Date dt2 = sdf_date_format.parse(date2, pos1);

long l = dt1.getTime() - dt2.getTime();

margin = (int) (l / (24 * 60 * 60 * 1000));

return margin;

} catch (Exception e) {

logger.debug("DateUtil.getMargin():" + e.toString());

return 0;

}

}

/**

* 比较两个日期相差的天数

* @author dylan_xu

* @date Mar 11, 2012

* @param date1

* @param date2

* @return

*/

public static double getDoubleMargin(String date1, String date2) {

double margin;

try {

ParsePosition pos = new ParsePosition(0);

ParsePosition pos1 = new ParsePosition(0);

Date dt1 = sdf_datetime_format.parse(date1, pos);

Date dt2 = sdf_datetime_format.parse(date2, pos1);

long l = dt1.getTime() - dt2.getTime();

margin = (l / (24 * 60 * 60 * 1000.00));

return margin;

} catch (Exception e) {

logger.debug("DateUtil.getMargin():" + e.toString());

return 0;

}

}

/**

* 比较两个日期相差的月数

* @author dylan_xu

* @date Mar 11, 2012

* @param date1

* @param date2

* @return

*/

public static int getMonthMargin(String date1, String date2) {

int margin;

try {

margin = (Integer.parseInt(date2.substring(0, 4)) - Integer.parseInt(date1.substring(0, 4))) * 12;

margin += (Integer.parseInt(date2.substring(4, 7).replaceAll("-0",

"-")) - Integer.parseInt(date1.substring(4, 7).replaceAll("-0", "-")));

return margin;

} catch (Exception e) {

logger.debug("DateUtil.getMargin():" + e.toString());

return 0;

}

}

/**

* 返回日期加X天后的日期

* @author dylan_xu

* @date Mar 11, 2012

* @param date

* @param i

* @return

*/

public static String addDay(String date, int i) {

try {

GregorianCalendar gCal = new GregorianCalendar(

Integer.parseInt(date.substring(0, 4)),

Integer.parseInt(date.substring(5, 7)) - 1,

Integer.parseInt(date.substring(8, 10)));

gCal.add(GregorianCalendar.DATE, i);

return sdf_date_format.format(gCal.getTime());

} catch (Exception e) {

logger.debug("DateUtil.addDay():" + e.toString());

return getDate();

}

}

/**

* 返回日期加X月后的日期

* @author dylan_xu

* @date Mar 11, 2012

* @param date

* @param i

* @return

*/

public static String addMonth(String date, int i) {

try {

GregorianCalendar gCal = new GregorianCalendar(

Integer.parseInt(date.substring(0, 4)),

Integer.parseInt(date.substring(5, 7)) - 1,

Integer.parseInt(date.substring(8, 10)));

gCal.add(GregorianCalendar.MONTH, i);

return sdf_date_format.format(gCal.getTime());

} catch (Exception e) {

logger.debug("DateUtil.addMonth():" + e.toString());

return getDate();

}

}

/**

* 返回日期加X年后的日期

* @author dylan_xu

* @date Mar 11, 2012

* @param date

* @param i

* @return

*/

public static String addYear(String date, int i) {

try {

GregorianCalendar gCal = new GregorianCalendar(

Integer.parseInt(date.substring(0, 4)),

Integer.parseInt(date.substring(5, 7)) - 1,

Integer.parseInt(date.substring(8, 10)));

gCal.add(GregorianCalendar.YEAR, i);

return sdf_date_format.format(gCal.getTime());

} catch (Exception e) {

logger.debug("DateUtil.addYear():" + e.toString());

return "";

}

}

/**

* 返回某年某月中的最大天

* @author dylan_xu

* @date Mar 11, 2012

* @param year

* @param month

* @return

*/

public static int getMaxDay(int iyear, int imonth) {

int day = 0;

try {

if (imonth == 1 || imonth == 3 || imonth == 5 || imonth == 7

|| imonth == 8 || imonth == 10 || imonth == 12) {

day = 31;

} else if (imonth == 4 || imonth == 6 || imonth == 9 || imonth == 11) {

day = 30;

} else if ((0 == (iyear % 4)) && (0 != (iyear % 100)) || (0 == (iyear % 400))) {

day = 29;

} else {

day = 28;

}

return day;

} catch (Exception e) {

logger.debug("DateUtil.getMonthDay():" + e.toString());

return 1;

}

}

/**

* 格式化日期

* @author dylan_xu

* @date Mar 11, 2012

* @param orgDate

* @param Type

* @param Span

* @return

*/

@SuppressWarnings("static-access")

public String rollDate(String orgDate, int Type, int Span) {

try {

String temp = "";

int iyear, imonth, iday;

int iPos = 0;

char seperater = '-';

if (orgDate == null || orgDate.length() < 6) {

return "";

}

iPos = orgDate.indexOf(seperater);

if (iPos > 0) {

iyear = Integer.parseInt(orgDate.substring(0, iPos));

temp = orgDate.substring(iPos + 1);

} else {

iyear = Integer.parseInt(orgDate.substring(0, 4));

temp = orgDate.substring(4);

}

iPos = temp.indexOf(seperater);

if (iPos > 0) {

imonth = Integer.parseInt(temp.substring(0, iPos));

temp = temp.substring(iPos + 1);

} else {

imonth = Integer.parseInt(temp.substring(0, 2));

temp = temp.substring(2);

}

imonth--;

if (imonth < 0 || imonth > 11) {

imonth = 0;

}

iday = Integer.parseInt(temp);

if (iday < 1 || iday > 31)

iday = 1;

Calendar orgcale = Calendar.getInstance();

orgcale.set(iyear, imonth, iday);

temp = this.rollDate(orgcale, Type, Span);

return temp;

} catch (Exception e) {

return "";

}

}

public static String rollDate(Calendar cal, int Type, int Span) {

try {

String temp = "";

Calendar rolcale;

rolcale = cal;

rolcale.add(Type, Span);

temp = sdf_date_format.format(rolcale.getTime());

return temp;

} catch (Exception e) {

return "";

}

}

/**

* 返回默认的日期格式

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static synchronized String getDatePattern() {

defaultDatePattern = "yyyy-MM-dd";

return defaultDatePattern;

}

/**

* 将指定日期按默认格式进行格式代化成字符串后输出如:yyyy-MM-dd

* @author dylan_xu

* @date Mar 11, 2012

* @param aDate

* @return

*/

public static final String getDate(Date aDate) {

SimpleDateFormat df = null;

String returnValue = "";

if (aDate != null) {

df = new SimpleDateFormat(getDatePattern());

returnValue = df.format(aDate);

}

return (returnValue);

}

/**

* 取得给定日期的时间字符串,格式为当前默认时间格式

* @author dylan_xu

* @date Mar 11, 2012

* @param theTime

* @return

*/

public static String getTimeNow(Date theTime) {

return getDateTime(timePattern, theTime);

}

/**

* 取得当前时间的Calendar日历对象

* @author dylan_xu

* @date Mar 11, 2012

* @return

* @throws ParseException

*/

public Calendar getToday() throws ParseException {

Date today = new Date();

SimpleDateFormat df = new SimpleDateFormat(getDatePattern());

String todayAsString = df.format(today);

Calendar cal = new GregorianCalendar();

cal.setTime(convertStringToDate(todayAsString));

return cal;

}

/**

* 将日期类转换成指定格式的字符串形式

* @author dylan_xu

* @date Mar 11, 2012

* @param aMask

* @param aDate

* @return

*/

public static final String getDateTime(String aMask, Date aDate) {

SimpleDateFormat df = null;

String returnValue = "";

if (aDate == null) {

logger.error("aDate is null!");

} else {

df = new SimpleDateFormat(aMask);

returnValue = df.format(aDate);

}

return (returnValue);

}

/**

* 将指定的日期转换成默认格式的字符串形式

* @author dylan_xu

* @date Mar 11, 2012

* @param aDate

* @return

*/

public static final String convertDateToString(Date aDate) {

return getDateTime(getDatePattern(), aDate);

}

/**

* 将日期字符串按指定格式转换成日期类型

* @author dylan_xu

* @date Mar 11, 2012

* @param aMask 指定的日期格式,如:yyyy-MM-dd

* @param strDate 待转换的日期字符串

* @return

* @throws ParseException

*/

public static final Date convertStringToDate(String aMask, String strDate)

throws ParseException {

SimpleDateFormat df = null;

Date date = null;

df = new SimpleDateFormat(aMask);

if (logger.isDebugEnabled()) {

logger.debug("converting '" + strDate + "' to date with mask '" + aMask + "'");

}

try {

date = df.parse(strDate);

} catch (ParseException pe) {

logger.error("ParseException: " + pe);

throw pe;

}

return (date);

}

/**

* 将日期字符串按默认格式转换成日期类型

* @author dylan_xu

* @date Mar 11, 2012

* @param strDate

* @return

* @throws ParseException

*/

public static Date convertStringToDate(String strDate)

throws ParseException {

Date aDate = null;

try {

if (logger.isDebugEnabled()) {

logger.debug("converting date with pattern: " + getDatePattern());

}

aDate = convertStringToDate(getDatePattern(), strDate);

} catch (ParseException pe) {

logger.error("Could not convert '" + strDate + "' to a date, throwing exception");

throw new ParseException(pe.getMessage(), pe.getErrorOffset());

}

return aDate;

}

/**

* 返回一个JAVA简单类型的日期字符串

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

public static String getSimpleDateFormat() {

SimpleDateFormat formatter = new SimpleDateFormat();

String NDateTime = formatter.format(new Date());

return NDateTime;

}

/**

* 将指定字符串格式的日期与当前时间比较

* @author DYLAN

* @date Feb 17, 2012

* @param strDate 需要比较时间

* @return

*

* int code

*

*

-1 当前时间 < 比较时间

*

0 当前时间 = 比较时间

*

>=1当前时间 > 比较时间

*

*

*/

public static int compareToCurTime (String strDate) {

if (StringUtils.isBlank(strDate)) {

return -1;

}

Date curTime = cale.getTime();

String strCurTime = null;

try {

strCurTime = sdf_datetime_format.format(curTime);

} catch (Exception e) {

if (logger.isDebugEnabled()) {

logger.debug("[Could not format '" + strDate + "' to a date, throwing exception:" + e.getLocalizedMessage() + "]");

}

}

if (StringUtils.isNotBlank(strCurTime)) {

return strCurTime.compareTo(strDate);

}

return -1;

}

/**

* 为查询日期添加最小时间

*

* @param 目标类型Date

* @param 转换参数Date

* @return

*/

@SuppressWarnings("deprecation")

public static Date addStartTime(Date param) {

Date date = param;

try {

date.setHours(0);

date.setMinutes(0);

date.setSeconds(0);

return date;

} catch (Exception ex) {

return date;

}

}

/**

* 为查询日期添加最大时间

*

* @param 目标类型Date

* @param 转换参数Date

* @return

*/

@SuppressWarnings("deprecation")

public static Date addEndTime(Date param) {

Date date = param;

try {

date.setHours(23);

date.setMinutes(59);

date.setSeconds(0);

return date;

} catch (Exception ex) {

return date;

}

}

/**

* 返回系统现在年份中指定月份的天数

*

* @param 月份month

* @return 指定月的总天数

*/

@SuppressWarnings("deprecation")

public static String getMonthLastDay(int month) {

Date date = new Date();

int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },

{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };

int year = date.getYear() + 1900;

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

return day[1][month] + "";

} else {

return day[0][month] + "";

}

}

/**

* 返回指定年份中指定月份的天数

*

* @param 年份year

* @param 月份month

* @return 指定月的总天数

*/

public static String getMonthLastDay(int year, int month) {

int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },

{ 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };

if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {

return day[1][month] + "";

} else {

return day[0][month] + "";

}

}

/**

* 判断是平年还是闰年

* @author dylan_xu

* @date Mar 11, 2012

* @param year

* @return

*/

public static boolean isLeapyear(int year) {

if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0) {

return true;

} else {

return false;

}

}

/**

* 取得当前时间的日戳

* @author dylan_xu

* @date Mar 11, 2012

* @return

*/

@SuppressWarnings("deprecation")

public static String getTimestamp() {

Date date = cale.getTime();

String timestamp = "" + (date.getYear() + 1900) + date.getMonth()

+ date.getDate() + date.getMinutes() + date.getSeconds()

+ date.getTime();

return timestamp;

}

/**

* 取得指定时间的日戳

*

* @return

*/

@SuppressWarnings("deprecation")

public static String getTimestamp(Date date) {

String timestamp = "" + (date.getYear() + 1900) + date.getMonth()

+ date.getDate() + date.getMinutes() + date.getSeconds()

+ date.getTime();

return timestamp;

}

public static void main(String[] args) {

System.out.println(getYear() + "|" + getMonth() + "|" + getDate());

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值