在很多项目中都需要对日期进行操作或是转换,在此对日期操作做了一个简单的汇总,把一些常用的方法进行了封装,代码写得不好,希望各位大虾多多指教!
//DateOperateUtils.java
package com.myclover.utils.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import com.myclover.utils.constant.DateConstants;
/**
* <pre>
* 功能描述: 日期操作类
* 实现日期格式化、日期计算、日期转换等功能
* </pre>
* @author 方方 <p>
* Blog: http://myclover.iteye.com <p>
* 日 期: 2010-08-28 <p>
* @version 1.0 <p>
* {@code com.myclover.utils.date.DateOperateUtils.java com.myclover.utils.constant.DateConstants.java}
*
*/
public class DateOperateUtils {
/**
*
* 功能描述:将字符串类型的日期转换为指定格式的Date类型的日期
* @param sDate 字符串日期,长度大于8,例如:2010-5-1、2010-05-01、2010-05-01 10:23:35
* @param format 需要转换的日期格式,例如:yyyy-MM-dd,yy-MM-dd 等
* 默认格式为:yyyy-MM-dd HH:mm:ss,format参数为空时表示默认格式
* @return 返回:
* 如果转换成功,则返回date对象,例如:Sat May 01 00:00:00 CST 2010 ,否则返回null
*/
public static java.util.Date parseStringToDate(String sDate, String format)
{
java.util.Date date = null;
if(format == null || format.trim().length() < 1)
{
format = DateConstants.DEFAULT_TIME_FORMAT;
}
if (sDate == null || sDate.length() < 8)
{
return null ;
}
try
{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
date = simpleDateFormat.parse(sDate);
} catch (ParseException e)
{
System.err.println("字符串转换成指定格式的日期失败:" + e.getMessage());
e.printStackTrace();
}
return date;
}
/**
*
* 功能描述:将字符串类型的日期转换为指定格式的字符串
* @param sDate 字符串日期,长度大于8,例如:2010-5-1、2010-05-01、2010-05-01 10:23:35
* @param format 需要转换的日期格式,例如:yyyy-MM-dd,yy-MM-dd 等
* 默认格式为:yyyy-MM-dd HH:mm:ss,format参数为空时表示默认格式
* @return 返回:
* 如果转换成功,则返回指定格式的字符串,例如:2010-05-01 ,否则返回空
*/
public static String parseSDateToString(String sDate, String format)
{
java.util.Date date = null;
String str = null;
if(format == null || format.trim().length() < 1)
{
format = DateConstants.DEFAULT_TIME_FORMAT;
}
if (sDate == null || sDate.length() < 8)
{
return "";
}
try
{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
date = simpleDateFormat.parse(sDate);
str = simpleDateFormat.format(date);
} catch (ParseException e)
{
System.err.println("字符串转换指定格式的日期字符串失败:" + e.getMessage());
e.printStackTrace();
}
return str;
}
/**
*
* 功能描述:将日期转换成指定格式的字符串
* @param date 需要转换的日期
* @param format 需要转换的格式,例如:yyyy-MM-dd,yy-MM-dd,yyyy-MM-dd HH:mm:ss 等
* 默认格式为:yyyy-MM-dd HH:mm:ss,format参数为空时表示默认格式
* @return 返回:
* 如果转换成功,则返回指定格式的字符串,否则返回空
*/
public static String parseDateToString(java.util.Date date, String format)
{
String str = null;
if(format == null || format.trim().length() < 1)
{
format = DateConstants.DEFAULT_TIME_FORMAT;
}
if (date == null)
{
return "";
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
str = simpleDateFormat.format(date);
return str;
}
/**
* 转换后的日期格式为:yy-MM-dd
* @param date
* @return
*/
public static String parseDateToYYMMdd(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYMMdd);
}
/**
* 转换后的日期格式为:yy-MM-dd HH:mm:ss
* @param date
* @return
*/
public static String parseDateToYYMMddHHmmss(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYMdHHmmss);
}
/**
* 转换后的日期格式为:yy年MM月dd日
* @param date
* @return
*/
public static String parseDateToYYMMdd_ZH(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYMMdd_ZH);
}
/**
* 转换后的日期格式为:yy年MM月dd日 HH:mm:ss
* @param date
* @return
*/
public static String parseDateToYYMMdd_ZHHHmmss(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYMMdd_ZHHHmmss);
}
/**
* 转换后的日期格式为:yyyyMMdd
* @param date
* @return
*/
public static String parseDateToYYYYMMdd(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYYYMMdd);
}
/**
* 转换后的日期格式为:yyyyMMddHHmmss
* @param date
* @return
*/
public static String parseDateToYYYYMMddHHmmss(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYYYMMddHHmmss);
}
/**
* 转换后的日期格式为:yyyy-MM-dd HH:mm:ss
* @param date
* @return
*/
public static String parseDateToDEFAULT_TIME(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.DEFAULT_TIME_FORMAT);
}
/**
* 转换后的日期格式为:yyyy-MM-dd
* @param date
* @return
*/
public static String parseDateToDEFAULT_DATE(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.DEFAULT_DATE_FORMAT);
}
/**
* 转换后的日期格式为:yyyy年MM月dd日
* @param date
* @return
*/
public static String parseDateToYYYYMMdd_ZH(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYYYMMdd_ZH);
}
/**
* 转换后的日期格式为:yyyy年MM月dd日 HH:mm:ss
* @param date
* @return
*/
public static String parseDateToYYYYMMdd_ZHHHmmss(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYYYMMdd_ZHHHmmss);
}
/**
* 转换后的日期格式为:yyyy/MM/dd
* @param date
* @return
*/
public static String parseDateToYYYYMd(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYYYMd);
}
/**
* 转换后的日期格式为:yyyy/MM/dd HH:mm:ss
* @param date
* @return
*/
public static String parseDateToYYYYMdHHmmss(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYYYMdHHmmss);
}
/**
* 转换后的日期格式为:yy/MM/dd
* @param date
* @return
*/
public static String parseDateToYYMd(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYMd);
}
/**
* 转换后的日期格式为:yy/MM/dd HH:mm:ss
* @param date
* @return
*/
public static String parseDateToYYMdHHmmss(java.util.Date date)
{
return DateOperateUtils.parseDateToString(date, DateConstants.YYMdHHmmss);
}
/**
*
* 功能描述:将数据库格式的日期转换为字符串
* @param date 数据库格式的日期
* @return 返回:
* 返回转换后的字符串
*/
public static String parseSqlDateToString(java.sql.Date date)
{
return String.valueOf(date);
}
/**
*
* 功能描述:将数据库格式的日期转换为java.util.Date类型的日期
* @param date 数据库格式的日期
* @return 返回:
* 返回转换后的日期
*/
public static java.util.Date parseSqlDateToDate(java.sql.Date date)
{
String str = DateOperateUtils.parseSqlDateToString(date);
return DateOperateUtils.parseStringToDate(str, DateConstants.DEFAULT_DATE_FORMAT);
}
/**
*
* 功能描述:将一个长整型的数据转换为日期格式的字符串
* @param time 长整型数据
* @param format 转换格式
* @return 返回:
* 返回转换格式后的字符串
*/
public static String parseLongToString(long time , String format)
{
java.util.Date date = new java.util.Date(time);
return DateOperateUtils.parseDateToString(date, format);
}
/**
*
* 功能描述:将java.util.Date类型的日期转换为数据库格式的日期
* @param date java.util.Date类型的日期
* @return 返回:
* 返回转换后的数据库格式的日期
*/
public static java.sql.Date parseUDateToSqlDate(java.util.Date date)
{
if(date == null)
{
return null;
}
return new java.sql.Date(date.getTime());
}
/**
*
* 功能描述:将java.util.Date转换为java.sql.Timestamp
* @param date 需要转换的java.util.Date数据
* @return 返回:
* 返回转换后的java.sql.Timestamp
*/
public static java.sql.Timestamp parseToSqlTimestamp(java.util.Date date)
{
if (date == null)
{
return null;
}
return new java.sql.Timestamp(date.getTime());
}
/**
* 功能描述:得到指定日期所在周的星期几的日期
* @param date 指定日期
* @param dayOfWeek 星期几
* @return 返回:
* 返回指定星期几的日期
*/
public static java.util.Date getDateOfWeek(java.util.Date date, int dayOfWeek)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, dayOfWeek);
return c.getTime();
}
/**
* 功能描述:获取指定日期为当前年的第几周
* @param date 指定日期
* @return 返回:
* 返回当前年的第几周
*/
public static int getWeekOfYear(java.util.Date date)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.WEEK_OF_YEAR);
}
/**
* 功能描述:获取指定年的第几周的第一天日期
* @param year 指定年
* @param nWeek 第几周
* @return 返回:
* 返回指定年的第几周的第一天日期
*/
public static java.util.Date getFirstDateOfWeek(int year, int nWeek)
{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, nWeek);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
return c.getTime();
}
/**
* 功能描述:获取指定年的第几周的最后一天日期
* @param year 指定年
* @param nWeek 第几周
* @return 返回:
* 返回指定年的第几周的最后一天日期
*/
public static java.util.Date getLastDateOfWeek(int year, int nWeek)
{
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, nWeek);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
return c.getTime();
}
/**
* 功能描述:获取当前年份
* @return 返回:
* 返回当前年份
*/
public static int getCurrentYear()
{
Calendar c = Calendar.getInstance();
return c.get(Calendar.YEAR);
}
/**
* 功能描述:获取当前月
* @return 返回:
* 返回当前月对应的值
*/
public static int getCurrentMonth()
{
Calendar c = Calendar.getInstance();
return c.get(Calendar.MONTH) + 1;
}
/**
* 功能描述:获取指定日期中的年份
* @param date 指定日期
* @return 返回:
* 返回年份
*/
public static int getYearOfDate(java.util.Date date)
{
if (date == null)
{
return 0;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.YEAR);
}
/**
* 功能描述:获取指定日期中的月份
* @param date 指定日期
* @return 返回:
* 返回对应的月份
*/
public static int getMonthOfDate(java.util.Date date)
{
if (date == null)
{
return 0;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.MONTH) + 1;
}
/**
* 功能描述:获取指定日期中的天
* @param date 指定日期
* @return 返回:
* 返回指定日期对应的天
*/
public static int getDayOfDate(java.util.Date date)
{
if (date == null)
{
return 0;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.DAY_OF_MONTH);
}
/**
* 功能描述:获取指定日期中的小时
* @param date 指定日期
* @return 返回:
* 返回对应的小时
*/
public static int getHourOfDate(java.util.Date date)
{
if (date == null)
{
return 0;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.HOUR_OF_DAY);
}
}
对应的常量
//DateConstants.java
package com.myclover.utils.constant;
/**
* 功能描述:常用工具类的常量信息
* @author 方方
* @version 1.0
*
*/
public class DateConstants {
public static final String DEFAULT_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
public static final String YYMMdd="yy-MM-dd";
public static final String YYMMddHHmmss="yy-MM-dd HH:mm:ss";
public static final String YYMMdd_ZH="yy年MM月dd日";
public static final String YYMMdd_ZHHHmmss="yy年MM月dd日 HH:mm:ss";
public static final String YYYYMMdd="yyyyMMdd";
public static final String YYYYMMddHHmmss="yyyyMMddHHmmss";
public static final String YYYYMMdd_ZH="yyyy年MM月dd日";
public static final String YYYYMMdd_ZHHHmmss="yyyy年MM月dd日 HH:mm:ss";
public static final String YYYYMd="yyyy/MM/dd";
public static final String YYYYMdHHmmss="yyyy/MM/dd HH:mm:ss";
public static final String YYMd="yy/MM/dd";
public static final String YYMdHHmmss="yy/MM/dd HH:mm:ss";
public static final String HHmmss="HH:mm:ss";
}