10-12 程宗武

10-11 时间日期类

1、Date

java.util.Date 表示特定的时间,用来表示时间和日期,提供一系列操作。

成员方法

Method type Description
equals(Object obj) boolean 比较两个日期相等(底层实际上调用了geTime()方法比较两个日期的时间戳是否相等)
getTime() long 自1970年1月1日以来,以此日期为准的00:00:00 GMT的毫 秒数
setTime(lone time) void 设置此 Date对象以表示1970年1月1日00:00:00 GMT后的 time毫秒的时间点
long timeMillis = System.currentTimeMillis();
Date date1 = new Date(timeMillis);
Date date2 = new Date(timeMillis);
System.out.println(date1.equals(date2));//true  比较两个日期的时间戳是否相等

Date实例的毫秒值是可以更改的

 Date date = new Date();
 System.out.println(date); //Mon Oct 12 21:45:05 GMT+08:00 2020
 date.setTime(1000L);
 System.out.println(date); //Thu Jan 01 08:00:01 GMT+08:00 1970

2、Calendar

java.util.Calendar 是一个抽象类。可以为在某一特定时刻和日历字段之间的转换的方法,以及用于 操纵该日历的字段提供了方法, 时间上的瞬间可以用毫秒值表示,该值是从1970年1月1日00:00 00: 00.000 GMT

2、1 获取Calendar对象的方式

(1)通过子类获取

  //1、通过子类
  Calendar calendar1 = new GregorianCalendar(); 
  //2、通过内部提供的实例方法
  Calendar calendar2 = Calendar.getInstance();

(2)获取对应的日期的方法

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));//fileds数组中存放了这个日期的所有信息,而常量Year对应的值就是数组下标为1的元素

image-20201012215706597

(3)设置日期的对应方法(也可以调用clear()方法清除日历的字段值)

 Calendar calendar = Calendar.getInstance();
 System.out.println(calendar.get(Calendar.YEAR));//2020
 calendar.set(Calendar.YEAR,1997);
 System.out.println(calendar.get(Calendar.YEAR));//1997

(4)Calendar对象和Date对象互相转

  Calendar calendar1 = new GregorianCalendar();
  //Calendar转Date
  Date time = calendar1.getTime();
  System.out.println(time);
  //Date转Calendar
  Date date = new Date();
  Calendar calendar2 = Calendar.getInstance();
  calendar2.setTime(date);
  System.out.println(calendar2);

3、DateFormat

java.text.DateFormat 是日期/时间格式化子类的抽象类。它可以将日期时间格式化和将字符串解析 为 Date

(1)格式化日期

 //格式化日期
 Date date = new Date();
 String str = "yyyy年MM月dd日";
 SimpleDateFormat dateFormat = new SimpleDateFormat(str);
 String format = dateFormat.format(date);
 System.out.println(format);//2020年10月12日

4、LocalDate(不可变的日期时间对象、线程安全)

java.time.LocalDate 是一个不可变( final 修饰)的日期时间对象,是线程安全的,表示日期,通常被 表示为年月日。也可以访问其他日期字段,例如日期,星期几和星
//获取LocalDate实例
LocalDate now = LocalDate.now();
System.out.println(now); //2020-10-12  不可变
 LocalDate 类中还提供了在指定 LocalDate 基础上增加/减少指定时间的方法(负数代表减少)
 LocalDate now = LocalDate.now();
 System.out.println(now); //2020-10-12
 LocalDate localDate = now.plusYears(10);
 System.out.println(localDate); //2030-10-12

5、 LocalTime (和LocalDate类似)

6、 LocalDateTime (不可变的日期时间对象)

LocalDateTime 底层是一个 LocalDate + LocalTime 实现的,并且 LocalDateTime实例一旦创建,其内部的各项取值便不可更改。

二、File类概述

//计算出磁盘上指定文件夹的实际大小
    @Test
    public void test10() {
        File file = new File("D:\\blog");
        Long sum = fileSize(file);
        System.out.println(sum);
    }

    public Long fileSize(File file) {
        //初始化大小
        long size = 0L;
        //获取file里面的所有文件和文件夹的名称
        String[] list = file.list();
        //遍历该list数组
        for (int i = 0; i < list.length; i++) {
            //创建一个新的文件路径
            String src = file.getAbsolutePath() + "\\" + list[i];
            //创建一个新的File实例
            File newFile = new File(src);
            //如果是一个文件,则计算长度并返回
            if (newFile.isFile()) {
                size += newFile.length();
            } else {
                //如果不是,则继续遍历
                size = size + fileSize(newFile);
            }
        }
        return size;
    }

标签

评论