4、Date类 & Calendar类及其常用的方法总结

学习来源:https://www.runoob.com/java/java-date-time.html

Date类

java.util.Date包内提供了操作日期的方法。

初始化的方式

Date date = new Date();
Date date2 = new Date(1000);
System.out.println("date1:" + date);  //date1:Thu Nov 05 13:52:34 CST 2020
System.out.println("date2:" + date2);  //date2:Thu Jan 01 08:00:01 CST 1970 该参数是从1970年1月1日起的毫秒数

常用的方法:

Date date = new Date();   //date1:Thu Nov 05 13:52:34 CST 2020
Date date2 = new Date(1000);  //date2:Thu Jan 01 08:00:01 CST 1970

boolean res1 = date.before(date2); //date是否在date2之后,是则返回true,否则返回false   false
boolean res2 = date.after(date2);  //date是否在date2之前.是则返回true,否则返回false    true
                
long time = date.getTime(); //从1970年1月1日 00:00:00开始计数
date.setTime(1000);      //从1970年1月1日 00:00:00开始累加

 

比较时间的大小

  • 使用 getTime() 方法获取两个日期的毫秒值,然后比较这两个值
  • 使用方法 before(),after() 和 equals()
  • 使用 compareTo() 方法
public static void compareTime(){
    Date date1 = new Date();  //当前时间
    Date date2 = new Date(1000); //Thu Jan 01 08:00:01 CST 1970
    {
        long time1 = date1.getTime();
        long time2 = date2.getTime();
        boolean res = time1 > time2 ? true : false;
        System.out.println(res); // true
    }
    {  //Date类实现了Comparable接口
        int res = date1.compareTo(date2); //date1 > date2 返回1
        System.out.println(res); // 1
    }
    
}

集合中的时间排序:

/**
 * 给集合中的时间升序排序
 * @param list
 */
public static void compareList(List<Date> list){
    Collections.sort(list, new Comparator<Date>() {
        @Override
        public int compare(Date date, Date t1) {
            if(date.getTime() > t1.getTime()){
                return 1;
            }else if(date.getTime() < t1.getTime()){
                return -1;
            }else {
                return 0;
            }
        }
    });
}

 

格式化日期

SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行

Date date = new Date();
SimpleDateFormat format_1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
SimpleDateFormat format_2 = new SimpleDateFormat("yyyy:MM:dd hh:mm"); 
SimpleDateFormat format_3 = new SimpleDateFormat("MM-dd hh");  
SimpleDateFormat format_4 = new SimpleDateFormat("yyyy/MM hh:mm");
SimpleDateFormat format_5 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");  

System.out.println(format_1.format(date));  //2020-11-05 03:18:07
System.out.println(format_2.format(date));  //2020:11:05 03:18
System.out.println(format_3.format(date));  //11-05 03
System.out.println(format_4.format(date));  //2020/11 03:18
System.out.println(format_5.format(date));  //2020年11月05日 03时24分37秒

 

解析字符串为时间

try{
    String str = "1998-10-11 00:00:00";
    Date t = format_1.parse(str);
}catch (ParseException v){
    v.getMessage();
}

 

获取当前时间的方法

long t1 = System.currentTimeMillis();
long t2 = new Date().getTime();
boolean res = t1 == t2 ? true : false;  //true

 

Calendar类

Calendar类可以获取日期中特定的数据,如日、小时、分钟,还能实现日期的加减时间。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

获取Calendar类的实例:

Calendar c = Calendar.getInstance();

常用方法:

public class TestCalendar {

    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();

        //设置确定的时间
        c.set(1998,10,11);  //设置时间为1998年10月11日
        Date t = c.getTime();

        //只设定某个确定的时间
        c.set(Calendar.YEAR,1998);
        c.set(Calendar.MONTH,10);
        c.set(Calendar.DATE,11);
        c.set(Calendar.HOUR,10);

        //时间的加减
        c.add(Calendar.DATE, 10); // 把c对象的日期加上10,也就是c也就表示为10天后的日期,其它所有的数值会被重新计算
        c.add(Calendar.DATE, -10); //把c对象的日期减去10,也就是c也就表示为10天前的日期,其它所有的数值会被重新计算

        //获取时间
        int year = c.get(Calendar.YEAR);  // 获得年份
        int month = c.get(Calendar.MONTH) + 1; // 获得月份
        int date = c.get(Calendar.DATE);  // 获得日期
        int hour = c.get(Calendar.HOUR_OF_DAY);  // 获得小时
        int minute = c.get(Calendar.MINUTE);  // 获得分钟
        int second = c.get(Calendar.SECOND); // 获得秒
        int day = c.get(Calendar.DAY_OF_WEEK); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
        
    }
}

 

posted @ 2020-11-04 17:26  jernia  阅读(228)  评论(0编辑  收藏  举报