package test2;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/********************
* 時間工具類
* 1.將String類型的時間轉化爲Date類型
* 2.將Date類型的時間轉化爲String類型
* 3.獲取當前系統時間格式化字符串
* 4.獲取當前時間戳
* 5.判斷傳入的Date類型時間是否在當前系統時間之前
* 6.判斷傳入的Date類型時間是否在當前系統時間之後
* 7.判斷傳入的Date類型時間是否和當前系統時間相等
* 8. 獲取兩個時間間隔的天數
* 9.得到一個時間延後多少天之後的時間
* 10.判斷是否潤年
* 11.獲取某個月的最後一天
* 12.判斷兩個日期是否在同一周
* 13.根據一個日期,返回是星期幾的字符串
* @author Shenfd
*
*/
public class DateUtil {
private DateUtil(){
}
static final String format1 = "yyyy-MM-dd HH:mm:ss";
static final String format2 = "yyyy-MM-dd HH:mm:ss:SS";
static final String format3 = "yyyy/MM/dd HH:mm:ss";
static final String format4 = "yyyy/MM/dd HH:mm:ss:SS";
static final String format5 = "yyyy年MM月dd日 HH時mm分ss秒";
static final String format6 = "yyyy年MM月dd日 HH時mm分ss秒SS毫秒";
static final String format7 = "yyyy-MM-dd";
static final String format8 = "yyyy年MM月dd日";
static final String format9 = "yyyyMMddHHmmssSS";
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,格式[yyyy-MM-dd HH:mm:ss]
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate1(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format1);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,格式[yyyy-MM-dd HH:mm:ss:SS],參數精確到毫秒
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate2(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format2);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,日期有斜/,格式[yyyy/MM/dd HH:mm:ss]
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate3(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format3);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,日期有斜/,格式[yyyy/MM/dd HH:mm:ss:SS],參數要精確到毫秒
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate4(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format4);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,日期有斜/,格式[yyyy年MM月dd日 HH24時mm分ss秒]
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate5(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format5);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,日期有斜/,格式[yyyy年MM月dd日 HH24時mm分ss秒SS毫秒]
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate6(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format6);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,格式[yyyy-MM-dd]
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate7(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format7);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************************
* 將String時間轉化爲Date類型
* @param stringTime
* 參數爲String類型時間,格式[yyyy年MM月dd日]
* @return Date類型時間
* @throws ParseException
*/
public static Date stringParseToDate8(String stringTime) throws ParseException{
DateFormat df = new SimpleDateFormat(format7);
Date date = null;
date = df.parse(stringTime);
return date;
}
/*******************
* 獲取當前系統時間
* @return String類型時間,格式[yyyy-MM-dd HH:mm:ss]
*/
public static String getCurrentDateString1(){
return new SimpleDateFormat(format1).format(new Date());
}
/*******************
* 獲取當前系統時間
* @return String類型時間,精確到毫秒,格式[yyyy-MM-dd HH:mm:ss:SS]
*/
public static String getCurrentDateString2(){
return new SimpleDateFormat(format2).format(new Date());
}
/*******************
* 獲取當前系統時間,日期加斜/
* @return String類型時間,格式[yyyy/MM/dd HH:mm:ss]
*/
public static String getCurrentDateString3(){
return new SimpleDateFormat(format3).format(new Date());
}
/*******************
* 獲取當前系統時間,精確到毫秒,日期加斜/
* @return String類型時間,格式[yyyy/MM/dd HH:mm:ss:SS]
*/
public static String getCurrentDateString4(){
return new SimpleDateFormat(format4).format(new Date());
}
/*******************
* 獲取當前系統時間
* @return String類型時間,格式[yyyy年MM月dd日 HH時mm分ss秒]
*/
public static String getCurrentDateString5(){
return new SimpleDateFormat(format5).format(new Date());
}
/*******************
* 獲取當前系統時間
* @return String類型時間,精確到毫秒,格式[yyyy年MM月dd日 HH時mm分ss秒SS毫秒]
*/
public static String getCurrentDateString6(){
return new SimpleDateFormat(format6).format(new Date());
}
/*******************
* 獲取當前系統時間
* @return String類型時間,精確到毫秒,格式[yyyy-MM-dd]
*/
public static String getCurrentDateString7(){
return new SimpleDateFormat(format7).format(new Date());
}
/*******************
* 獲取當前系統時間
* @return String類型時間,精確到毫秒,格式[yyyy年MM月dd日]
*/
public static String getCurrentDateString8(){
return new SimpleDateFormat(format8).format(new Date());
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy-MM-dd HH:mm:ss]
*/
public static String dateParseToString1(Date date){
DateFormat df = new SimpleDateFormat(format1);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy-MM-dd HH:mm:ss:SS]
*/
public static String dateParseToString2(Date date){
DateFormat df = new SimpleDateFormat(format2);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy/MM/dd HH:mm:ss]
*/
public static String dateParseToString3(Date date){
DateFormat df = new SimpleDateFormat(format3);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy/MM/dd HH:mm:ss:SS]
*/
public static String dateParseToString4(Date date){
DateFormat df = new SimpleDateFormat(format4);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy年MM月dd日 HH時mm分ss秒]
*/
public static String dateParseToString5(Date date){
DateFormat df = new SimpleDateFormat(format5);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy年MM月dd日 HH時mm分ss秒SS毫秒]
*/
public static String dateParseToString6(Date date){
DateFormat df = new SimpleDateFormat(format6);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy-MM-dd]
*/
public static String dateParseToString7(Date date){
DateFormat df = new SimpleDateFormat(format7);
return df.format(date);
}
/****************************
* 將Date類型日期格式化爲String類型
* @param date 參數爲Date類型
* @return 返回String類型時間,格式[yyyy年MM月dd日]
*/
public static String dateParseToString8(Date date){
DateFormat df = new SimpleDateFormat(format8);
return df.format(date);
}
/***********************
* 獲取當前時間戳 格式yyyyMMddHHmmssSS
* @return String類型時間戳
*/
public static String getTimeStampString(){
return new SimpleDateFormat(format9).format(new Date());
}
/*************************
* 判斷傳入的Date類型時間是否在當前系統時間之前
* @param date 和當前系統時間比較的時間
* @return bollean
*/
public static boolean isBoforeCurrentDate(Date date){
return (date.getTime()<(new Date().getTime())) ? true:false;
}
/*************************
* 判斷傳入的Date類型時間是否在當前系統時間之後
* @param date 和當前系統時間比較的時間
* @return boolean
*/
public static boolean isAfterCurrentDate(Date date){
return (date.getTime()>(new Date().getTime())) ? true:false;
}
/*************************
* 判斷傳入的Date類型時間是否和當前系統時間相等
* @param date 和當前系統時間比較的時間
* @return boolean
*/
public static boolean isEqualsCurrentDate(Date date){
return (date.getTime()==(new Date().getTime())) ? true:false;
}
/*************************
* 獲取兩個時間間隔的天數,如果返回值大於0,則表示startDate>endDate
* @param startDate Date類型
* @param endDate Date類型
* @return 間隔天數
*/
public static int getSeparateDay(Date startDate,Date endDate){
return (int) ((startDate.getTime()-endDate.getTime())/(24 * 60 * 60 * 1000));
}
/*************************
* 獲取兩個時間間隔的天數,如果返回值大於0,則表示startDate>endDate
* @param startDate String類型
* @param endDate String類型
* @return 間隔天數
* @throws ParseException
*/
public static int getSeparateDay(String startDate, String endDate) throws ParseException{
DateFormat df = new SimpleDateFormat(format7);
return (int) ((df.parse(startDate).getTime()-df.parse(endDate).getTime())/(24 * 60 * 60 * 1000));
}
/****************************
* 得到一個時間延後多少天之後的時間
* @param nowDay String類型的時間
* @param delay 前移或後延的天數
* @return 返回String類型時間
* @throws ParseException
*/
public static String getMoveDay(String nowDay, int delay) throws ParseException{
DateFormat df = new SimpleDateFormat(format7);
Date d = stringParseToDate7(nowDay);
long myTime = (d.getTime() / 1000) + delay * 24 * 60 * 60;
d.setTime(myTime * 1000);
return df.format(d);
}
/****************************
* 得到當前時間延後多少天之後的時間
* @param nowDay String類型的時間
* @param delay 前移或後延的天數
* @return 返回Date類型時間
* @throws ParseException
*/
public static Date getMoveDay(int delay) throws ParseException{
DateFormat df = new SimpleDateFormat(format7);
Date d = new Date();
long myTime = (d.getTime() / 1000) + delay * 24 * 60 * 60;
d.setTime(myTime * 1000);
return df.parse(df.format(d));
}
/*********************
* 判斷是否潤年
* @param date Date類型時間
* @return boolean
*/
public static boolean isLeapYear(Date date) {
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
int year = gc.get(Calendar.YEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
/*********************
* 判斷是否潤年
* @param date String類型時間
* @return boolean
* @throws ParseException
*/
public static boolean isLeapYear(String date) throws ParseException {
DateFormat df = new SimpleDateFormat(format7);
Date d = df.parse(date);
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(d);
int year = gc.get(Calendar.YEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
/***********************
* 獲取某個月的最後一天
* @param date String類型的時間
* @return String日期,返回格式:[yyyy-MM-dd]
* @throws ParseException
*/
public static String getEndDateOfMonth(String date) throws ParseException {// yyyy-MM-dd
String str = date.substring(0, 8);
String month = date.substring(5, 7);
int mon = Integer.parseInt(month);
if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {
str += "31";
} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
str += "30";
} else {
if (isLeapYear(date)) {
str += "29";
} else {
str += "28";
}
}
return str;
}
/*******************
* 判斷兩個日期是否在同一周
* @param date1 Date類型的時間
* @param date2 Date類型的時間
* @return boolean
*/
public static boolean isSameWeekDates(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
if (0 == subYear) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) {
// 如果12月的最後一週橫跨來年第一週的話則最後一週即算做來年的第一週
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) {
if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
return true;
}
return false;
}
/**************
* 根據一個日期,返回是星期幾的字符串
* @param date Date類型的日期
* @return
*/
public static String getWeekStr(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
String str=new SimpleDateFormat("EEEE").format(c.getTime());
if("1".equals(str)){
str = "星期日";
}else if("2".equals(str)){
str = "星期一";
}else if("3".equals(str)){
str = "星期二";
}else if("4".equals(str)){
str = "星期三";
}else if("5".equals(str)){
str = "星期四";
}else if("6".equals(str)){
str = "星期五";
}else if("7".equals(str)){
str = "星期六";
}
return str;
}
}
最後,歡迎訪問風格清新簡潔的輕博客網站[指尖一刻]