Java日期和时间

Java 日期和时间

学习自

http://blog.csdn.net/zjf280441589/article/details/50447533

Date类

Date 类是在JDK 1.0 的时候提供的,到现在可以说是历史非常悠久了,其中有很多方法都已经弃用。

构造函数
//这样new出来的代表的是当前的时间
Date date = new Date();
//1970-1-1 00:00:00以来经过的毫秒数)来生成Date对象.
Date date = new Date(long date);
常用方法
/**
 * 获取当前的系统时间
 */
private void getSystemTime() {
    Date date = new Date(1000);
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String time = format.format(date);
    System.out.println(time);
}

/**
 * 判断date是否在一个date之后
 */
private void after() {
    Date date = new Date();
    Date checkDate = new Date(System.currentTimeMillis() + 1000);
    System.out.println(date.after(checkDate));
}

/**
 * 判断date是否在一个date之前
 */
private void before() {
    Date date = new Date();
    Date checkDate = new Date(System.currentTimeMillis() + 1000);
    System.out.println(date.before(checkDate));
}

Calendar

因为Calendar有很多的缺陷,并且也比较老旧,JDK又提供了java.util.Calendar 类,Calendar类是一个抽象类,没有具体实现,他是一个所有日历的模板。

获取Calendar实例
//获取公历日历
Calendar calendar = Calendar.getInstance();
常用方法
//可以进行时间的加减
calendar.add(Calendar.DAY_OF_YEAR, 1);
//获取不同的时间的值
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
将字符串转化为时间
/**
 * 將字符串转化为时间
 */
private void convertStringToDate() {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //被转换的时间的格式必须要与DateFormat解析的时间格式相同
    String strDate = "2018-9-19 08:11:11";
    try {
        Date date = dateFormat.parse(strDate);
        String value = dateFormat.format(date);
        System.out.println(value);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

计算两个时间之间的差值

通过获取总的毫秒数,然后进行换算

/**
 * 计算两个时间之间的差值
 */
private void getTimeSpan() {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    try {
        Date dateFirst = dateFormat.parse("2018-10-11 09:11:11");
        Date dateSecond = dateFormat.parse("2018-10-10 07:11:10");
        long diff = dateSecond.getTime() - dateFirst.getTime();
        diff = diff / 1000;
        //
        long second = diff % 60;
        long minute = diff % 3600 / 60;
        long hour = diff % (3600 * 24) / 3600;
        long day = diff / (3600 * 24);
        String value = 
        String.format("%S 与 %S 之间相差了 %d days %d hours %d minutes %d second", 
                        dateFormat.format(dateSecond),
                        dateFormat.format(dateFirst),
                        day, hour,
                        minute,
                        second);
        System.out.println(value);
      //2018-10-10 07:11:10 与 2018-10-11 09:11:11 之间相差了 -1 days -2 hours 0 minutes -1 second
    } catch (Exception e) {
        e.printStackTrace();
    }
}
原文地址:https://www.cnblogs.com/slyfox/p/8589814.html