Java常用時間格式轉換工具類
開發過程中,經常遇到各種時間格式的轉換。今天特此以部落格的方式,記錄開發過程中可能遇到的各種型別時間的格式轉換,以工具類的方式引入,方便大家開發中使用!
public final class DataUtils{
/**
* 預設不同的時間格式
*/
//精確到年月日(英文) eg:2019-11-11
public static String FORMAT_LONOGRAM = "yyyy-MM-dd" ;
//精確到時分秒的完整時間(英文) eg:2010-11-11 12:12:12
public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss";
//精確到毫秒完整時間(英文) eg:2019-11-11 12:12:12.55
public static String FORMAT_FULL_MILL = "yyyy-MM-dd HH:mm:ss.SSS"
//精確到年月日(中文)eg:2019年11月11日
public static String FORMAT_LONOGRAM_CN = "yyyy年MM月dd日"
//精確到時分秒的完整時間(中文)eg:2019年11月11日 12時12分12秒
public static String FORMAT_FULL_CN = "yyyy年MM月dd日 HH時mm分ss秒"
//精確到毫秒完整時間(中文)
public static String FORMAT_FULL_MILL_CN = "yyyy年MM月dd日 HH時mm分ss秒SSS毫秒"
/**
*預設預設的時間格式
*/
public static String getDefaultFormat(){return FORMAT_FULL};
/**
* 預設格式格式化日期
*/
public static String format(Date date) {
return format(date, getDefaultFormat());
}
/**
*自定義格式格式化日期
*/
public static String format(Date date,String format){
String value = "";
if(date!=null){
SimpleDateFormat sdf = new SimpleDateFormat(format);
value = sdf.format(date);
}
return value;
}
/**
*根據預設預設格式,返回當前日期
*/
public static String getNow(){return format(new Date());}
/**
*自定義時間格式,返回當前日期
*/
public static String getNow(String format){return format(new Date(),format);}
/**
*根據預設預設時間 String->Date
*/
public static Date parse(String strDate){return parse(strDate,getDefaultFormat)};
/**
*自定義時間格式:Stirng->Date
*/
public static Date parse(String strDate,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
try{
return sdf.parse(strDate);
}catch(ParseException e){
e.printStackTrace();
return null;
}
}
/**
*基於指定日期增加年
*@param num 整數往後推,負數往前移
*/
public static Date addMobth(Date date,int num){
Calendar= Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR,num);
return cal.getTime();
}
/**
*基於指定日期增加整月
*@param num 整數往後推,負數往前移
*/
public static Date addMobth(Date date,int num){
Calendar= Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH,num);
return cal.getTime();
}
/**
*基於指定日期增加天數
*@param num 整數往後推,負數往前移
*/
public static Date addDay(Date date, int num) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, num);
return cal.getTime();
}
/**
*基於指定日期增加分鐘
*@param num 整數往後推,負數往前移
*/
public static Date addMinute(Date date, int num) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, num);
return cal.getTime();
}
/**
*獲取時間戳 eg:yyyy-MM-dd HH:mm:ss.S
*/
public static String getTimeStamp(){
SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_FULL_MILL);
Calendar cal = Calendar.getInstance();
return sdf.format(Calendar.getTime());
}
/**
*獲取日期年份
*/
public static String getYear(Date date){return format(date).substring(0,4);}
/**
*獲取年份+月
*/
public static String getYearMonth(Date date){return format(date).substring(0,7);}
/**
*獲取日期的小時數
*/
public static int getHour(Date date){
Calendar calendar = Calendar.getInstrance();
calendar.setTime(date);
return calendar.get(Calendar.HOUR_OFDAY);
}
/**
*自定義時間格式字串距離今天的天數
*/
public static int countDays(String strDate,String format){
long time = Calendar.getInstance.getTime().getTime();
Calendar cal = Calendar.getInstance();
cal.setTime(parse(strDate,format));
long diff = cal.getTime().getTime();
return (int) (time/1000 - diff/1000)/3600/24;
}
/**
* 預設格式的字串距離今天的天數
*/
public static int countDays(String strDate){return countDays(strDate,getDefaultFormat());}
/**
* 獲取天數差值(依賴時間)
* @return
*/
public static int diffDays(Date date1, Date date2) {
if (date1 == null || date2 == null) return 0;
return (int) (Math.abs(date1.getTime() - date2.getTime()) / (60 * 60 * 24 * 1000));
} 鄭州人流醫院哪家好
/**
*獲取年份差值
*/
public static int diffYear(Date year1,Date year2){return diffDays(year1,year2) / 365;}
/**
* 獲取天數差值(依賴Date型別的日期)
* @return
*/
public static int diffByDays(Date d1, Date d2) {
Date s1 = parse(format(d1, FORMAT_LONOGRAM ), FORMAT_LONOGRAM );
Date s2 = parse(format(d2, FORMAT_LONOGRAM ), FORMAT_LONOGRAM );
return diffDays(s1, s2);
}
/**
* 獲取時間分割集合
*
* @param date 查詢日期
* @param strs 帶拆分的時間點
* @return
*/
public static List collectTimes(Date date, String[] strs) {
List result = new ArrayList<>();
List times = Arrays.asList(strs);
String dateStr = format(date, FORMAT_LONOGRAM );
String pattern = FORMAT_LONOGRAM + " k";
if (times.size() > 0) {
times.stream().forEach(t -> {
result.add(parse(dateStr + " " + t, pattern));
});
}
return result;
}
/**
* 根據日期查詢當前為周幾
* @param dt
* @return
*/
public static String getWeekOfDate(Date dt) {
String[] weekDays = {"1", "2", "3", "4", "5", "6", "7"};
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK);
if (0 == w) {
w = 7;
}
return weekDays[w];
}
public static String intToCn(int hourInt, String[] timeArray) {
String result = "";
if (0 <= hourInt && hourInt <= 10) {
result += timeArray[hourInt] + "\n";
} else if (11 <= hourInt && hourInt <= 19) {
result += (timeArray[10] + "\n" + timeArray[hourInt % 10]) + "\n";
} else {
result += (timeArray[hourInt / 10] + "\n" + timeArray[10] + "\n" + (hourInt % 10 == 0 ? "" : timeArray[hourInt % 10] + "\n"));
}
return result;
}
/**
* 將時間轉換成漢字
* @param hour
* @return
*/
public static String hourToCn(String hour){
String[] timeArray = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"};
String[] hourArray = hour.split(":");
int hourInt = Integer.parseInt(hourArray[0]);
int minute = Integer.parseInt(hourArray[1]);
String result = intToZh(hourInt, timeArray) + "點\n" + intToZh(minute, timeArray) + "分";
return result;
}
/**
* 獲取當前日期後的一週時間,並返回LinkedHashMap
* @param startTime
* @return
*/
public static LinkedHashMap dateAfterWeek(String startTime) {
LinkedHashMap result = new LinkedHashMap<>();
try {
Date date = parse(startTime,FORMAT_LONOGRAM);
for (int i = 0; i < 7; i++) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendar.DATE, m); //把日期往後增加一天,整數往後推,負數往前移動 時間戳轉時間
Date newDate = calendar.getTime();
String str = new SimpleDateFormat("yyyy-MM-dd").format(newDate);
result.put(str, newDate);
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 獲取當前日期 後的一週時間,並返回yyyy-MM-dd字串陣列
* @param startTime
* @return
*/
public static String[] dateAfterWeekArray(String startTime) {
String weekArray[] = new String[7];
try {
Date date = parse(startTime,FORMAT_LONOGRAM);
for (int i = 0; i < 7; i++) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendar.DATE, m); //把日期往後增加一天,整數往後推,負數往前移動 時間戳轉時間
Date newDate = calendar.getTime();
weekArray[m] = new SimpleDateFormat("yyyy-MM-dd").format(newDate);
}
} catch (Exception e) {
e.printStackTrace();
}
return weekArray;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2671220/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 轉換UTC時間格式
- [時間格式的轉換]
- LocalDateTime工具類(常用轉換)LDA
- JavaScript 時間日期格式轉換JavaScript
- java時間格式轉化Java
- 直播app原始碼,JAVA8 時間格式轉換APP原始碼Java
- java時間工具類Java
- JavaScript 時間轉換為UTC格式JavaScript
- 工具方法:時間轉換
- java工具類之編碼轉換工具類Java
- 把時間戳轉為常用日期格式時間戳
- Java之時間轉換Java
- Java 中節省 90% 時間的常用的工具類Java
- 時間有幾種格式、相互之間如何轉換?
- MySQL 時間戳的 獲取 & 轉換為特定時間格式MySql時間戳
- js時間戳與日期格式的相互轉換JS時間戳
- JavaScript將時間戳轉換為年月日格式JavaScript時間戳
- 時間戳轉化為時間格式時間戳
- 時間轉換
- 萬能java字串編碼轉換工具類Java字串編碼
- png轉jpg,常用格式怎麼互相轉換
- 【純手工打造】時間戳轉換工具(python)時間戳Python
- java新特性處理時間工具類Java
- as3 時間格式工具S3
- heic格式轉換jpg工具——轉易俠heic轉換器
- js把時間戳轉換成時間格式yyyy-MM-dd HH:mm:ssJS時間戳
- 【時間戳轉普通時間格式的方法】時間戳
- 直播網站原始碼,vue工具類,時間格式化網站原始碼Vue
- 短視訊平臺原始碼,平臺顯示時間,時間格式的轉換原始碼
- 型別轉換工具類型別
- 文字格式轉換工具:Text Workflow for macMac
- 全能的視訊格式轉換工具
- 好用的音訊格式轉換工具音訊
- 萬能媒體格式轉換工具
- MakeMKV——MKV視訊格式轉換工具
- Mac視訊格式轉換工具—iFlicksMac
- 直播電商平臺開發,日期與時間戳轉換封裝工具類時間戳封裝
- 時間相減和時間轉換