格式化日期時間差的工具
阿新 • • 發佈:2018-11-15
文章目錄
很久沒寫日期時間差的東西,剛好用到,備份個工具類,包含日期date的格式化操作,計算兩個日期的時間差,可以自由精確到小時,分鐘,秒的量級,也可計算一個date的時間距離當前時間的時間差等等。
指定格式的日期字串轉Date
Date endDate= null ; try { endDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(“日期的string字串”); } catch (ParseException e) { e.printStackTrace(); }
計算兩個date的時間差
package com.thesis.mentor.base; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by Administrator on 2018/10/15. */ public class LeadTime { private static volatile LeadTime instance; private SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;//設定日期格式 private LeadTime() { } public static LeadTime getInstance() { if (instance == null) { synchronized (LeadTime.class) { if (instance == null) { instance = new LeadTime(); } } } return instance; } /** * 計算兩個日期的時間差,精確到秒 * @param d1 日期1 * @param d2 日期2 * @return */ public String leadTime(Date d1, Date d2) { // df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式 Date date=new Date();//呼叫方法時的當前時間 String nowTime= df.format(date); // 毫秒ms long diff = d2.getTime() - d1.getTime(); //秒 long diffSeconds = diff / 1000 % 60; //分 long diffMinutes = diff / (60 * 1000) % 60; //小時 long diffHours = diff / (60 * 60 * 1000) % 24; //天數 long diffDays = diff / (24 * 60 * 60 * 1000); return "距離當前時間剩餘" + diffDays + "天" + diffHours + "時"; } /** * 計算傳入日期和當前時間的時間差,精確到秒 * @param d1 日期1 * @return */ public String leadTimeNow(Date d1) { // df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式 Date d2=new Date();//呼叫方法時的當前時間 // 毫秒ms long diff = d2.getTime() - d1.getTime(); //秒 long diffSeconds = diff / 1000 % 60; //分 long diffMinutes = diff / (60 * 1000) % 60; //小時 long diffHours = diff / (60 * 60 * 1000) % 24; //天數 long diffDays = diff / (24 * 60 * 60 * 1000); return "時間差" + diffDays + "天" + diffHours + "時"; } }
校驗指定格式日期是否是當天日期
/** * 檢查任意日期是否是當天 * @param str 傳入需要校驗的日期字串 * @param formatStr 日期格式 yyyy-MM-dd HH:mm:ss * @return true 表示校驗日期是當天日期 * @throws Exception */ public static boolean isToday(String str, String formatStr) throws Exception { SimpleDateFormat format = new SimpleDateFormat(formatStr); Date date = null; try { date = format.parse(str); } catch (ParseException e) { // logger.error("解析日期錯誤", e); LogUtils.e("解析日期錯誤", e.toString()); } Calendar c1 = Calendar.getInstance(); c1.setTime(date); int year1 = c1.get(Calendar.YEAR); int month1 = c1.get(Calendar.MONTH) + 1; int day1 = c1.get(Calendar.DAY_OF_MONTH); Calendar c2 = Calendar.getInstance(); c2.setTime(new Date()); int year2 = c2.get(Calendar.YEAR); int month2 = c2.get(Calendar.MONTH) + 1; int day2 = c2.get(Calendar.DAY_OF_MONTH); if (year1 == year2 && month1 == month2 && day1 == day2) { return true; } return false; }