詳解JAVA常用的時間操作【實用】
項目中經(jīng)常有對時間進行處理的需求,下面是一些常用的操作整理,方便以后再次使用以及做相關(guān)復(fù)習。
1.字符串轉(zhuǎn)換為日期
/**
* 字符串轉(zhuǎn)換為日期
* @param dateStr 需要轉(zhuǎn)換的日期
* @param dateFormat 日期格式y(tǒng)yyy-MM-dd/yyyy-MM-dd HH:mm:ss
*/
public static Date toDate(String dateStr, SimpleDateFormat dateFormat) throws ParseException{
Date date = null;
try {
date = dateFormat.parse(dateStr);
} catch (ParseException e) {
logger.debug("Fail to convert String to Date, {}", dateStr);
}
return date;
}
2.時間戳轉(zhuǎn)日期
/**
* 時間戳轉(zhuǎn)日期
* @param date
* @return
*/
public static String dateToTime(long time, SimpleDateFormat dateFormat) throws ParseException{
String data = null;
try {
dateFormat.format(new Date(time*1000));
} catch (Exception e) {
logger.debug("Fail to convert long to Date, {}", time);
}
return data;
}
3.日期格式化成字符串
/**
* 日期格式化成字符串
* @param date
* @param dateFormat
* @return
* @throws ParseException
*/
public static String toString(Date date, SimpleDateFormat dateFormat) throws ParseException{
return dateFormat.format(date);
}
4.獲取指定日期之前或之后的日期 ,十分秒為00:00:00
/**
* 獲取指定日期之前或之后的日期
* @param date
* @param num 正數(shù)為之后,負數(shù)為之前
* @return yyyy-MM-dd 00:00:00
*/
public static Date getSpecificDate(Date date, int num){
Calendar todayCal = Calendar.getInstance();
todayCal.setTime(date);
Calendar c = Calendar.getInstance();
c.set(todayCal.get(Calendar.YEAR), todayCal.get(Calendar.MONTH), todayCal.get(Calendar.DAY_OF_MONTH) + num, 0, 0, 0);
return c.getTime();
}
5.獲取指定日期之前或之后的日期 ,時分秒為當前的
/**
* 獲取指定日期之前或之后的日期
* @param date
* @param num 正數(shù)為之前,負數(shù)為之后
* @return yyyy-MM-dd + 當前的時分秒
*/
public static Date getSpecificDateAndHhMmSs(Date date,int num){
Calendar c = Calendar.getInstance();
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day - num);
return c.getTime();
}
6.將time類型的時間字符串 轉(zhuǎn)換成 時、分
/**
* 將time類型的時間字符串 轉(zhuǎn)換成 時、分
* HH-mm-ss -->> HH-mm
* @param time
* @return
*/
public static String timeToHHMM(String time){
return time.substring(0, time.length() - 3);
}
7.獲取某個日期的時、分
/**
* 獲取某個日期的時、分
* @param date
* @return HH-mm
*/
public static String getHM(Date date){
Calendar ca = Calendar.getInstance();
ca.setTime(date);
Integer hour = ca.get(Calendar.HOUR_OF_DAY);//小時
Integer minute = ca.get(Calendar.MINUTE);//分
String rs_hour = hour.toString();
String rs_minute = minute.toString();
if (rs_hour.length() == 1){
rs_hour = "0" + hour;
}
if(rs_minute.length() == 1){
rs_minute = "0" + minute;
}
return rs_hour + ":" + rs_minute;
}
8.time類型的時間字符串 -->> 零點開始的秒數(shù)
/**
* time類型的時間字符串 -->> 零點開始的秒數(shù)
* @param time HH-mm / HH-mm-ss
* @return
*/
public static Integer timeToSeconds(String time){
String[] timeSplit = null;
int hours = 0,minutes = 0,seconds = 0;
try {
timeSplit = time.split(":");
if (timeSplit.length == 2) {
hours = Integer.valueOf(timeSplit[0])*60*60;
minutes = Integer.valueOf(timeSplit[1])*60;
}else if(timeSplit.length == 3){
hours = Integer.valueOf(timeSplit[0])*60*60;
minutes = Integer.valueOf(timeSplit[1])*60;
seconds = Integer.valueOf(timeSplit[2]);
}else{
logger.debug("Fail to convert the time, {}", time);
}
} catch (Exception e) {
logger.debug("Fail to convert the time, {}", time);
throw e;
}
return hours + minutes + seconds;
}
9.零點開始的秒數(shù)轉(zhuǎn)時間 -->> HH-mm-ss
/**
* 零點開始的秒數(shù)轉(zhuǎn)時間 -->> HH-mm-ss
* @param durationSeconds
* @return
*/
public static String getDuration(int durationSeconds){
int hours = durationSeconds /(60*60);
int leftSeconds = durationSeconds % (60*60);
int minutes = leftSeconds / 60;
int seconds = leftSeconds % 60;
StringBuffer sBuffer = new StringBuffer();
sBuffer.append(addZeroPrefix(hours));
sBuffer.append(":");
sBuffer.append(addZeroPrefix(minutes));
sBuffer.append(":");
sBuffer.append(addZeroPrefix(seconds));
return sBuffer.toString();
}
public static String addZeroPrefix(int number){
if(number < 10)
return "0"+number;
else
return ""+number;
}
10.比較兩個日期相差的秒數(shù)
/**
* 比較兩個日期相差的秒數(shù)
* @param startDate
* @param endDate
* @return
*/
public static int getTimeSeconds(Date startDate,Date endDate) {
long a = endDate.getTime();
long b = startDate.getTime();
return (int)((a - b) / 1000);
}
11.判斷兩個時間段是否存在交集
/**
* 比較兩個日期相差的秒數(shù)
* @param startDate
* @param endDate
* @return
*/
public static int getTimeSeconds(Date startDate,Date endDate) {
long a = endDate.getTime();
long b = startDate.getTime();
return (int)((a - b) / 1000);
}
12.獲取指定日期是星期幾(1-7分別代表周一至周日)
/**
* 獲取指定日期是星期幾(1-7分別代表周一至周日)
* @return
*/
public static int DayOfWeek(Date date){
Calendar now = Calendar.getInstance();
now.setTime(date);
boolean isFirstDay = (now.getFirstDayOfWeek() == Calendar.SUNDAY);
int weekday = now.get(Calendar.DAY_OF_WEEK);
if(isFirstDay){
weekday = weekday - 1;
if(weekday == 0){
weekday = 7;
}
}
return weekday;
}
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
SpringBoot項目中的favicon.ico圖標無法顯示問題及解決
這篇文章主要介紹了SpringBoot項目中的favicon.ico圖標無法顯示問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Spring Data JPA實現(xiàn)動態(tài)條件與范圍查詢實例代碼
本篇文章主要介紹了Spring Data JPA實現(xiàn)動態(tài)條件與范圍查詢實例代碼,非常具有實用價值,需要的朋友可以參考下2017-06-06
詳解SpringBoot中@SessionAttributes的使用
這篇文章主要通過示例為大家詳細介紹了SpringBoot中@SessionAttributes的使用,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-07-07
springboot+thymeleaf國際化之LocaleResolver接口的示例
本篇文章主要介紹了springboot+thymeleaf國際化之LocaleResolver的示例 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11

