1. 程式人生 > >格式化日期時間差的工具

格式化日期時間差的工具

文章目錄

很久沒寫日期時間差的東西,剛好用到,備份個工具類,包含日期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;
    }