美文网首页
java日期格式转换比较

java日期格式转换比较

作者: 缘木与鱼 | 来源:发表于2019-11-07 16:50 被阅读0次

date类型转换成String类型

/**
 * 将date转换成String类型
 * @param date Date
 * @param pattern 日期类型格式 : yyyy-MM-dd 等
 * @return
 */
public static String dateToString(Date date, String pattern){
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    String dateStr = sdf.format(date);
    return dateStr;
}

String类型转换成date类型

/**
 * 将String类型转换成date类型
 * @param dateStr 日期字符串
 * @param pattern 日期类型格式 : yyyy-MM-dd 等
 * @return
 * @throws ParseException 转换异常
 */
public static Date StringToDate(String dateStr, String pattern) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    Date date = sdf.parse(dateStr);
    return date;
}

获取date前后多少天内的日期

/**
 * 获取date前后几天内的日期
 * @param date 日期
 * @param pattern 日期字符串类型格式 : yyyy-MM-dd 等
 * @return
 */
public static String getTime(Date date, String pattern){
    Calendar c = new GregorianCalendar();
    c.setTime(date);
    // 后一天为1, 前一天为 -1
    c.add(Calendar.DATE, 1);
    date = c.getTime();
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    String dateStr = sdf.format(date);
    return dateStr;
}

日期的比较

 /**
 * 方式一: Date 自带的 before、after 方法, 返回的是boolean类型
 * @param date1
 * @param date2
 * @return
 *      true : date1 比 date2 早
 *      false: date1 比 date2 晚
 */
public static boolean compareDate(Date date1, Date date2){
    if (date1.before(date2)){
        return true;
    } else {
        return false;
    }
}

/**
 * 方式二: Date实现了Comparable接口,重写的里面的compareTo方法,直接调用compareTo()方法进行比较
 * @param date1
 * @param date2
 * @return 返回值为 int 类型:date1 < date2   返回-1
 *                           date1 = date2   返回0
 *                           date1 > date2   返回1
 */
public static int compareToDate(Date date1, Date date2){
    int result = date1.compareTo(date2);
    return result;
}


/**
 * 方式三: 将时间转换成毫秒数来进行比较
 * @param date1
 * @param date2
 * @return date1 比 date2 早,返回false
 *         date1 比 date2 晚,返回true
 */
public static boolean compareDateFrom(Date date1, Date date2){
    long date1Time = date1.getTime();
    long date2Time = date2.getTime();
    boolean result = date1Time > date2Time;
    return result;
}

计算时间差

/**
 * 计算时间差 : 10个小时
 */
public boolean countTimt(Date date1, Date date2){
    Long diff = date2.getTime() - date1.getTime();
    long days = diff / (1000 * 60 * 60 * 24);
    long hours = (diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
    long result = days * 24 + hours;
    if (result >= 10){
        return true;
    }else {
        return false;
    }
}


/**
 * 时间比较,date1是否比date晚90天
 */
private boolean compareTime(Date date, Date date1) {
    long beginMillisecond = date.getTime();
    long endMillisecond = date1.getTime();
    long t = endMillisecond - beginMillisecond;
    // 三个月时间的毫秒数
    long t1 = 7776000000L;
    //Date类的一个方法,如果a早于b返回true,否则返回false
    if (t > t1) {
        return true;
    } else {
        return false;
    }
}

执行结果:

public static void main(String[] args) throws ParseException {

    Date date = new Date();
    String pattern = "yyyy-MM-dd";
    String pattern1 = "yyyy-MM-dd HH:mm:ss";
    String pattern2 = "yyyy年MM月dd日 HH:mm:ss";
    String pattern3 = "yyyyMMddHHmmss";

    String str = dateToString(date, pattern);
    System.out.println(str);        // 2019-11-07
    Date date1 = StringToDate(str, pattern);
    System.out.println(date1);      // Thu Nov 07 00:00:00 GMT+08:00 2019

    str = dateToString(date, pattern1);
    System.out.println(str);        // 2019-11-07 16:47:50
    date1 = StringToDate(str, pattern1);
    System.out.println(date1);      // Thu Nov 07 16:47:50 GMT+08:00 2019

    str = dateToString(date, pattern2);
    System.out.println(str);        // 2019年11月07日 16:47:50
    date1 = StringToDate(str, pattern2);
    System.out.println(date1);      // Thu Nov 07 16:47:50 GMT+08:00 2019

    str = dateToString(date, pattern3);
    System.out.println(str);        // 20191107164750
    date1 = StringToDate(str, pattern3);
    System.out.println(date1);      // Thu Nov 07 16:47:50 GMT+08:00 2019

    String strring = getTime(date, pattern);
    System.out.println(strring);    // 2019-11-08

    Date date2 = new Date();
    boolean res = compareDate(date1, date2);
    System.out.println(res);        // true
}

相关文章

网友评论

      本文标题:java日期格式转换比较

      本文链接:https://www.haomeiwen.com/subject/spmvbctx.html