日期常用方法总结

说明

项目中使用的 日期类型是 java.util.Date
MySQL中的日期类型是 datetime
数据表映射对象也用的 java.util.Date

个人总结的FormatUtils

包含下面几个

  1. 字符串类型的(年月日时分秒) 转成 Date类型
  2. 将当前Date类型按照指定格式转成 String类型的
  3. 将String类型的日期格式转成毫秒值
  4. 将毫秒值转成 String类型的日期格式
  5. 计算两个日期间隔的小时数
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @Author: LiangJingXing
 * @Date: 2019/6/10 14:29
 * @Description: 日期格式转换工具类
 * SimpleDateFormat 线程不安全
 */
public class FormatUtils {

    /**
     * 字符串类型转 Date 
     * @param stringDate
     * @return
     */
    public static Date StringFormatDate(String stringDate){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
        try {
            date = simpleDateFormat.parse(stringDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 将当前日期类型 转换成String
     * @return
     */
    public static String DateToString(Date date){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
        String format = simpleDateFormat.format(date);
        return format;
    }

    /**
     * 将时间格式 yyyy-MM-dd HH:mm:ss String的表现形式转成毫秒
     * @param timeStr
     * @return
     * @throws ParseException
     */
    public static Long stringFormatCurrentMillis(String timeStr) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
        Date date = simpleDateFormat.parse(timeStr);
        long ts = date.getTime();
        return ts;
    }

    /**
     * 将 毫秒值 转成 时间格式的字符传
     * @param timeMillis
     * @return
     */
    public static String currentMillisToDateString(Long timeMillis){
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(timeMillis);
//        年
        int year = calendar.get(Calendar.YEAR);
//        月
        int month = calendar.get(Calendar.MONTH) + 1 ;
        String monthStr = addZero(month);
//        日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        String dayStr = addZero(day);
//        24小时制
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        String hourStr = addZero(hour);
//        分
        int minute = calendar.get(Calendar.MINUTE);
        String minuteStr = addZero(minute);
//        秒
        int second = calendar.get(Calendar.SECOND);
        String secondStr =addZero(second);
        return(year + "-" + monthStr  + "-" + dayStr + " "
                + hourStr + ":" + minuteStr + ":" + secondStr);
    }

    /**
     * 不满2位数 用0补齐
     * @param param
     * @return
     */
    private static String addZero(int param) {
        String paramStr = param < 10 ? "0"+param : "" + param ;
        return paramStr;
    }

    /**
     * 计算2个日期间隔 小时数
     * @param date1
     * @param date2
     * @return
     * @throws ParseException
     */
    public static Long calcDaysBetweenForHours(Date date1, Date date2) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
        date1 = simpleDateFormat.parse(simpleDateFormat.format(date1));
        date2 = simpleDateFormat.parse(simpleDateFormat.format(date2));

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date1);
        long timeInMillis1 = calendar.getTimeInMillis();
        calendar.setTime(date2);
        long timeInMillis2 = calendar.getTimeInMillis();
        long hours = (timeInMillis2 - timeInMillis1) /(1000 * 60 * 60);
        return hours;
    }


    /**
     * 在同一小时 true  不在同一小时 false
     * @param date1
     * @param pushTime
     * @return
     * @throws ParseException
     */
    public static Boolean calcIsAlreadyPush(Date date1, Date pushTime) throws ParseException{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH");
        date1 = simpleDateFormat.parse(simpleDateFormat.format(date1));
        pushTime = simpleDateFormat.parse(simpleDateFormat.format(pushTime));

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date1);
        long timeInMillis1 = calendar.getTimeInMillis();
        calendar.setTime(pushTime);
        long pushTimeMillis = calendar.getTimeInMillis();
        if (timeInMillis1 - pushTimeMillis == 0){
            return true;
        }
        return false;
    }


}

你可能感兴趣的:(Java基础)