日期工具類
/**
* 時間戳轉換成日期格式字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String timeStampDate(long seconds, String format) {
if (BaseStringUtils.textIsEmpty(format)) {
format = "yyyy-MM-dd HH:mm";
}
return new SimpleDateFormat(format).format(new Date(seconds));
}
/*****
* 時間戳轉換成Calendar
* @param stamp
* @return
*/
public static Calendar timeStamp2Calendar(long stamp) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(stamp));
return calendar;
}
/**
* 時間戳轉換成日期格式字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String timeStampWeek(long seconds, String format) {
if (BaseStringUtils.textIsEmpty(format)) {
format = "yyyy-MM-dd";
}
return dateToWeek(timeStamp(seconds, format), format);
}
/**
* 日期轉星期
*
* @param datetime
* @return
*/
private static String dateToWeek(String datetime, String format) {
SimpleDateFormat f = new SimpleDateFormat(format);
String[] weekDays = {"週日", "週一", "週二", "週三", "週四", "週五", "週六"};
Calendar cal = Calendar.getInstance(); // 獲得一個日曆
Date datet = null;
try {
datet = f.parse(datetime);
cal.setTime(datet);
} catch (ParseException e) {
e.printStackTrace();
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一個星期中的某天。
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 時間戳轉換成日期格式字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String timeStamp(long seconds, String format) {
return new SimpleDateFormat(format).format(new Date(seconds));
}
/**
* 時間戳轉換成周期字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String weekTimeStamp(Long seconds, String format) {
String week = null;
Calendar cd = Calendar.getInstance();
cd.setTime(new Date(seconds));
int mydate = cd.get(Calendar.DAY_OF_WEEK);
// 獲取指定日期轉換成星期幾
if (mydate == 1) {
week = "週日";
} else if (mydate == 2) {
week = "週一";
} else if (mydate == 3) {
week = "週二";
} else if (mydate == 4) {
week = "週三";
} else if (mydate == 5) {
week = "週四";
} else if (mydate == 6) {
week = "週五";
} else if (mydate == 7) {
week = "週六";
}
return week;
}
/**
* 獲取當前時間, 年月日時分秒
*
* @return
*/
public static String createTime() {
String time = (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date()).toString();
return time;
}
/**
* 比較兩個時間或日期的大小
*
* @param time1
* @param time2
* @return
* @throws ParseException
*/
public static boolean compare(String time1, String time2) throws ParseException {
//如果想比較日期則寫成"yyyy-MM-dd"就可以了
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
//將字符串形式的時間轉化爲Date類型的時間
Date a = sdf.parse(time1);
Date b = sdf.parse(time2);
//Date類的一個方法,如果a早於b返回true,否則返回false
if (a.before(b))
return false;
else
return true;
}
/**
* 獲取當前日期
*
* @return
*/
public static String createDate() {
String time = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()).toString();
return time;
}
/**
* 取得當前時間戳(精確到秒)
*
* @return
*/
public static String timeStamp() {
long time = System.currentTimeMillis();
String t = String.valueOf(time / 1000);
return t;
}
public static String getWeek(String mMeek) {
switch (mMeek) {
case "週一":
return "1";
case "週二":
return "2";
case "週三":
return "3";
case "週四":
return "4";
case "週五":
return "5";
case "週六":
return "6";
case "週日":
return "7";
}
return "1";
}
public static String getWeekDisable(int mMeek) {
switch (mMeek) {
case Calendar.MONDAY:
return "週一";
case Calendar.TUESDAY:
return "週二";
case Calendar.WEDNESDAY:
return "週三";
case Calendar.THURSDAY:
return "週四";
case Calendar.FRIDAY:
return "週五";
case Calendar.SATURDAY:
return "週六";
case Calendar.SUNDAY:
return "週日";
}
return "";
}
/**
* 日期格式字符串轉換成時間戳
*
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String dateTimeStamp(String date_str, String format) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return String.valueOf(sdf.parse(date_str).getTime());
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* 日期格式字符串轉換成時間戳
*
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static Long dateTimeStampLong(String date_str, String format) {
Long data = 0L;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(date_str).getTime();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
private static Date getThisWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
if (date != null)
cal.setTime(date);
// 獲得當前日期是一個星期的第幾天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 獲得當前日期是一個星期的第幾天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根據日曆的規則,給當前日期減去星期幾與一個星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return cal.getTime();
}
public static String getDefaultDate(Date date) {
return new SimpleDateFormat("yyyy-MM-dd").format(getThisWeekMonday(date)) + " 00:00";
}
public static long getThisFirstDay(String dateStr, String format) {
try {
Calendar current = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
cal.setTime(new SimpleDateFormat(format).parse(dateStr));
if (current.get(Calendar.MONTH) == cal.get(Calendar.MONTH))
return cal.getTime().getTime();
else
//獲取當前月第一天
return getFirstDayCurrentMonth().getTime().getTime();
} catch (ParseException e) {
return new Date().getTime();
}
}
/*****
* 將時間戳數組轉化爲格式化數組
* @param times
* @param format
* @return
*/
public static List<String> formatList(List<String> times, String format) {
List<String> newTime = new ArrayList<>();
if (times == null || times.isEmpty()) {
return newTime;
}
for (String str : times) {
String forTime = timeStamp(Long.parseLong(str), format);
if (newTime.contains(forTime))
continue;
newTime.add(forTime);
}
return newTime;
}
/****
* 獲取前月的第一天
* @return
*/
public static Calendar getFirstDayLastMonth() {
Calendar calendar = Calendar.getInstance();//獲取當前日期
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);//設置爲1號,當前日期既爲本月第一天
return calendar;
}
/****
* 獲取前月的最後一天
* @return
*/
public static Calendar getLastDayLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 0);//設置爲1號,當前日期既爲本月第一天
return calendar;
}
/****
* 獲取當前月第一天
* @return
*/
public static Calendar getFirstDayCurrentMonth() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);//設置爲1號,當前日期既爲本月第一天
return calendar;
}
/***
* 獲取當前月最後一天
* @return
*/
public static Calendar getLastDayCurrentMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return calendar;
}
/**
* 獲取當前時間的後一天時間
*
* @param cl
*/
public static Calendar getAfterDay(Calendar cl) {
// TODO Auto-generated method stub
// 使用roll方法進行回滾到後一天的時間
// cl.roll(Calendar.DATE, 1);
// 使用set方法直接設置時間值
int day = cl.get(Calendar.DATE);
cl.set(Calendar.DATE, day + 1);
return cl;
}
/**
* 獲取時間的前一天時間
*
* @param cl
*/
public static Calendar getBeforeDay(Calendar cl) {
// TODO Auto-generated method stub
// 使用roll方法進行向前回滾
// cl.roll(Calendar.DATE, -1);
// 使用set方法直接進行設置
int day = cl.get(Calendar.DATE);
cl.set(Calendar.DATE, day - 1);
return cl;
}
/**
* 設置時間
*
* @param year
* @param month
* @param date
* @return
*/
public static Calendar setCalendar(int year, int month, int date) {
Calendar cl = Calendar.getInstance();
cl.set(year, month - 1, date);
return cl;
}
/*****
* 格式化日期
* @param year
* @param month
* @param day
* @return
*/
public static String forMatDateYYMMDD(int year, int month, int day) {
month += 1;
return year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day);
}
* 時間戳轉換成日期格式字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String timeStampDate(long seconds, String format) {
if (BaseStringUtils.textIsEmpty(format)) {
format = "yyyy-MM-dd HH:mm";
}
return new SimpleDateFormat(format).format(new Date(seconds));
}
/*****
* 時間戳轉換成Calendar
* @param stamp
* @return
*/
public static Calendar timeStamp2Calendar(long stamp) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date(stamp));
return calendar;
}
/**
* 時間戳轉換成日期格式字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String timeStampWeek(long seconds, String format) {
if (BaseStringUtils.textIsEmpty(format)) {
format = "yyyy-MM-dd";
}
return dateToWeek(timeStamp(seconds, format), format);
}
/**
* 日期轉星期
*
* @param datetime
* @return
*/
private static String dateToWeek(String datetime, String format) {
SimpleDateFormat f = new SimpleDateFormat(format);
String[] weekDays = {"週日", "週一", "週二", "週三", "週四", "週五", "週六"};
Calendar cal = Calendar.getInstance(); // 獲得一個日曆
Date datet = null;
try {
datet = f.parse(datetime);
cal.setTime(datet);
} catch (ParseException e) {
e.printStackTrace();
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一個星期中的某天。
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 時間戳轉換成日期格式字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String timeStamp(long seconds, String format) {
return new SimpleDateFormat(format).format(new Date(seconds));
}
/**
* 時間戳轉換成周期字符串
*
* @param seconds 精確到秒的字符串
* @param format
* @return
*/
public static String weekTimeStamp(Long seconds, String format) {
String week = null;
Calendar cd = Calendar.getInstance();
cd.setTime(new Date(seconds));
int mydate = cd.get(Calendar.DAY_OF_WEEK);
// 獲取指定日期轉換成星期幾
if (mydate == 1) {
week = "週日";
} else if (mydate == 2) {
week = "週一";
} else if (mydate == 3) {
week = "週二";
} else if (mydate == 4) {
week = "週三";
} else if (mydate == 5) {
week = "週四";
} else if (mydate == 6) {
week = "週五";
} else if (mydate == 7) {
week = "週六";
}
return week;
}
/**
* 獲取當前時間, 年月日時分秒
*
* @return
*/
public static String createTime() {
String time = (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date()).toString();
return time;
}
/**
* 比較兩個時間或日期的大小
*
* @param time1
* @param time2
* @return
* @throws ParseException
*/
public static boolean compare(String time1, String time2) throws ParseException {
//如果想比較日期則寫成"yyyy-MM-dd"就可以了
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
//將字符串形式的時間轉化爲Date類型的時間
Date a = sdf.parse(time1);
Date b = sdf.parse(time2);
//Date類的一個方法,如果a早於b返回true,否則返回false
if (a.before(b))
return false;
else
return true;
}
/**
* 獲取當前日期
*
* @return
*/
public static String createDate() {
String time = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date()).toString();
return time;
}
/**
* 取得當前時間戳(精確到秒)
*
* @return
*/
public static String timeStamp() {
long time = System.currentTimeMillis();
String t = String.valueOf(time / 1000);
return t;
}
public static String getWeek(String mMeek) {
switch (mMeek) {
case "週一":
return "1";
case "週二":
return "2";
case "週三":
return "3";
case "週四":
return "4";
case "週五":
return "5";
case "週六":
return "6";
case "週日":
return "7";
}
return "1";
}
public static String getWeekDisable(int mMeek) {
switch (mMeek) {
case Calendar.MONDAY:
return "週一";
case Calendar.TUESDAY:
return "週二";
case Calendar.WEDNESDAY:
return "週三";
case Calendar.THURSDAY:
return "週四";
case Calendar.FRIDAY:
return "週五";
case Calendar.SATURDAY:
return "週六";
case Calendar.SUNDAY:
return "週日";
}
return "";
}
/**
* 日期格式字符串轉換成時間戳
*
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String dateTimeStamp(String date_str, String format) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return String.valueOf(sdf.parse(date_str).getTime());
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* 日期格式字符串轉換成時間戳
*
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static Long dateTimeStampLong(String date_str, String format) {
Long data = 0L;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(date_str).getTime();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
private static Date getThisWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
if (date != null)
cal.setTime(date);
// 獲得當前日期是一個星期的第幾天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 獲得當前日期是一個星期的第幾天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根據日曆的規則,給當前日期減去星期幾與一個星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return cal.getTime();
}
public static String getDefaultDate(Date date) {
return new SimpleDateFormat("yyyy-MM-dd").format(getThisWeekMonday(date)) + " 00:00";
}
public static long getThisFirstDay(String dateStr, String format) {
try {
Calendar current = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
cal.setTime(new SimpleDateFormat(format).parse(dateStr));
if (current.get(Calendar.MONTH) == cal.get(Calendar.MONTH))
return cal.getTime().getTime();
else
//獲取當前月第一天
return getFirstDayCurrentMonth().getTime().getTime();
} catch (ParseException e) {
return new Date().getTime();
}
}
/*****
* 將時間戳數組轉化爲格式化數組
* @param times
* @param format
* @return
*/
public static List<String> formatList(List<String> times, String format) {
List<String> newTime = new ArrayList<>();
if (times == null || times.isEmpty()) {
return newTime;
}
for (String str : times) {
String forTime = timeStamp(Long.parseLong(str), format);
if (newTime.contains(forTime))
continue;
newTime.add(forTime);
}
return newTime;
}
/****
* 獲取前月的第一天
* @return
*/
public static Calendar getFirstDayLastMonth() {
Calendar calendar = Calendar.getInstance();//獲取當前日期
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);//設置爲1號,當前日期既爲本月第一天
return calendar;
}
/****
* 獲取前月的最後一天
* @return
*/
public static Calendar getLastDayLastMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 0);//設置爲1號,當前日期既爲本月第一天
return calendar;
}
/****
* 獲取當前月第一天
* @return
*/
public static Calendar getFirstDayCurrentMonth() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);//設置爲1號,當前日期既爲本月第一天
return calendar;
}
/***
* 獲取當前月最後一天
* @return
*/
public static Calendar getLastDayCurrentMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return calendar;
}
/**
* 獲取當前時間的後一天時間
*
* @param cl
*/
public static Calendar getAfterDay(Calendar cl) {
// TODO Auto-generated method stub
// 使用roll方法進行回滾到後一天的時間
// cl.roll(Calendar.DATE, 1);
// 使用set方法直接設置時間值
int day = cl.get(Calendar.DATE);
cl.set(Calendar.DATE, day + 1);
return cl;
}
/**
* 獲取時間的前一天時間
*
* @param cl
*/
public static Calendar getBeforeDay(Calendar cl) {
// TODO Auto-generated method stub
// 使用roll方法進行向前回滾
// cl.roll(Calendar.DATE, -1);
// 使用set方法直接進行設置
int day = cl.get(Calendar.DATE);
cl.set(Calendar.DATE, day - 1);
return cl;
}
/**
* 設置時間
*
* @param year
* @param month
* @param date
* @return
*/
public static Calendar setCalendar(int year, int month, int date) {
Calendar cl = Calendar.getInstance();
cl.set(year, month - 1, date);
return cl;
}
/*****
* 格式化日期
* @param year
* @param month
* @param day
* @return
*/
public static String forMatDateYYMMDD(int year, int month, int day) {
month += 1;
return year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.