• 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代表星期二,以此类推)
            
        }
    }
  • 相关阅读:
    Blocks to Cubes
    poj1113凸包
    AtCoder Regular Contest 078D
    Codeforces Round #400
    hdu2196树形dp
    Codeforces Round #409
    Codeforces Round #424
    hdu1520树形dp第一题
    Codeforces Round #412
    poj2823单调队列
  • 原文地址:https://www.cnblogs.com/chenia/p/13926986.html
Copyright © 2020-2023  润新知