java基本日期相关方法封装类
package com.common;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang.time.DateUtils;
public class DateUtil {
public final static String PATTERN_TIME = "yyyy-MM-dd HH:mm:ss";
public final static String PATTERN_DATE = "yyyy-MM-dd";
public final static String PATTERN_DATE2 = "yyyyMMdd";
//---------------------PATTERN_DATE2形式字符串转换---------------------//
/**
* 日期格式转换(日期转字符串)
* @param date
* @return PATTERN_DATE2格式字符串
*/
public static String convertFormOfDate(Date date){
String dateStr = formatDate(date);
dateStr = dateStr.replace("-", "");
return dateStr;
}
/**
* 日期格式转换(字符串转字符串)
* @param date
* @return PATTERN_DATE2格式字符串
*/
public static String convertFormOfDate(String date){
String dateStr = date.replace("-", "");
return dateStr;
}
//---------------------长时间与短时间转换(时间转时间)---------------------//
/**
* 长时间转短时间
* @param longDate
* @return Date shortDate(eg:2017-09-10)
*/
public static Date getDateShort(Date longDate){
String dateStr = formatDate(longDate);
Date shortDate = (java.util.Date)java.sql.Date.valueOf(dateStr);
return shortDate;
}
/**
* 短时间转长时间
* @param shortDate
* @returnDate Date longDate
*/
public static Date getDateLong(Date shortDate){
String dateStr = formatTime(shortDate);
Date longDate = parseTime(dateStr);
return longDate;
}
//------------------------字符串转日期(会抛异常)------------------------//
/**
* 日期字符串解析(字符串转日期)
* @param date
* @return
*/
public static Date parseDate(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATE);
return sdf.parse(date);
} catch (ParseException e) {
throw new RuntimeException("parse date failed for: " + date);
}
}
/**
* 时间字符串解析(字符串转日期)
* @param time
* @return
*/
public static Date parseTime(String time) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
return sdf.parse(time);
} catch (ParseException e) {
throw new RuntimeException("parse date failed for: " + time);
}
}
//----------------------------日期转字符串----------------------------//
/**
* 日期格式化 pattern(日期转字符串)
* @param date
* @param pattern
* @return
*/
public static String formatDate(Date date, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 日期格式化 (日期转字符串)
* @param date
* @return PATTERN_DATE
*/
public static String formatDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_DATE);
return sdf.format(date);
}
/**
* 日期格式化 (日期转字符串)
* @param date
* @return PATTERN_TIME
*/
public static String formatTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
return sdf.format(date);
}
//--------------------------日期相关常用方法封装--------------------------//
/**
* 比较时间字符串
* @param t1
* @param t2
* @return -1/1/0
*/
public static int compareTimeStr(String t1, String t2) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
Date d1 = sdf.parse(t1);
Date d2 = sdf.parse(t2);
if(d1.before(d2)) return -1;
if(d1.after(d2)) return 1;
return 0;
} catch (ParseException e) {
throw new IllegalArgumentException("Illegal arguement for time str:" + t1 + ", " + t2);
}
}
/**
* 返回时间字符串对应的日期应该是周几
* @param timeStr
* @return
*/
public static String getDayOfWeek(String timeStr) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_TIME);
Date date = sdf.parse(timeStr);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
switch(dayOfWeek) {
case 1 : return "周日";
case 2 : return "周一";
case 3 : return "周二";
case 4 : return "周三";
case 5 : return "周四";
case 6 : return "周五";
case 7 : return "周六";
default : throw new IllegalArgumentException();
}
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
/**
* 判断时间字符串是否是今天
* @param timeStr
* @return
*/
public static boolean isToday(String timeStr) {
Date date = parseTime(timeStr);
boolean isToday = DateUtils.isSameDay(date, new Date());
return isToday;
}
//------------------------------测试类------------------------------//
public static void main(String[] args) {
/* 获取系统当前时间(长时间格式 2017-09-07 16:36:53.289) */
Date date = new Timestamp(System.currentTimeMillis());
/* Fri Sep 08 13:22:04 CST 2017 */
Date date2 = new Date();
/* Fri Sep 08 13:22:04 CST 2017 */
Date date3 = new Date(System.currentTimeMillis());
System.out.println(formatDate(date2));
System.out.println(formatTime(date3));
String timeStr = date.toString();
isToday(timeStr);
getDayOfWeek(timeStr);
convertFormOfDate(date2);
convertFormOfDate("2017-09-08");
Date shortDate = getDateShort(date2);
Date longDate = getDateLong(shortDate);
}
}