你真的了解java吗?java总结七

java面试题:

JDK 和 JRE 有什么区别?

JDK(Java Development Kit),Java开发工具包

JRE(Java Runtime Environment),Java运行环境

JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。

日期类

1.Data

创建当前日期的Date对象

Date date = new Date();

获取从1970年1月1日以来的毫秒数的两种方法

long time = date.getTime();
long time1 = System.currentTimeMillis();

时间毫秒数->日期对象两种方式

我们可以直接通过构造器获取时间对象
Date date1 = new Date(time);

也可以通过setTime方法获取时间对象
Date date2 = new Date();
date2.setTime(time);

2.SimpleDateFormat

指定格式化时间

        //指定格式化的形式
        //EEE代表星期几 a代表上午或下午
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");
        String format = simpleDateFormat.format(date);
        System.out.println(format);
        System.out.println("----------------------------------------------");

        //格式化时间毫秒值
        long t1 = System.currentTimeMillis();
        String str = simpleDateFormat.format(t1);
        System.out.println(str);
        System.out.println("----------------------------------------------");

        //时间解析
        //实现SimpleDateFormat解析字符串时间成为日期对象
        String dataStr = "2022年04月25日 18:00:00";
        //解析的形式必须与传入的字符串完全相同
        SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date parse = sd.parse(dataStr);

        //计算两个小时之后的时间,2L防止越界,将int类型转换成long类型计算
        long time = parse.getTime();
        parse.setTime(time+2L*60*60*1000);

        System.out.println(sd.format(parse));

 输出样例

 综上:

SimpleDateFormat可以格式化Date类型以及毫秒值类型

解析字符串转换成时间类型。

3.Calendar

        //获取系统此时的日历对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);

        //get()方法,获取日历中的某个字段信息
        int year = calendar.get(Calendar.YEAR);
        System.out.println(year);

        int day = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("当前是一年中的第"+day+"天");

        //计算当前时间的7天后
        calendar.add(Calendar.DAY_OF_YEAR,7);
        int day1 = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("7天后是一年中的第"+day1+"天");

        //获取一个Date对象
        Date date = calendar.getTime();
        System.out.println(date);

        //获取时间毫秒值
        long timeInMillis = calendar.getTimeInMillis();
        System.out.println(timeInMillis);

总结:

Calendar代表日历类,里面含有很多的日历信息,封装了很多的方法来供我们使用。

补:JDK8新增的日期类

 4.LocalDate的基本用法:

        //LocalTime
        //获取当前时间
        LocalTime nowTime = LocalTime.now();
        System.out.println(nowTime);
        //一小时前
        System.out.println(nowTime.minusHours(1));
        //一分钟前
        System.out.println(nowTime.minusMinutes(1));
        //一秒前
        System.out.println(nowTime.minusSeconds(1));

        System.out.println("**************************************************");

        //一小时后
        System.out.println(nowTime.plusHours(1));
        //一分钟后
        System.out.println(nowTime.plusMinutes(1));
        //一秒后
        System.out.println(nowTime.plusSeconds(1));

注意:这里每次变化都会返回一个新的值,而不是在原本的对象上做修改

5.LocalDate基本用法:

        //获取一个日期对象
        LocalDate birthday = LocalDate.of(2000,1,1);
        LocalDate now = LocalDate.now();

        //判断时间的前后
        //判断两个时间是否相等
        System.out.println(birthday.equals(now));

        //判断当前时间是否在出生日之前
        System.out.println(now.isBefore(birthday));

        //判断当前时间是否在出生日之后
        System.out.println(now.isAfter(birthday));

        //判断今天是否是你的生日
        //获取生日的月份和日期
        MonthDay bir = MonthDay.of(birthday.getMonth(),birthday.getDayOfMonth());
        //获取当前的月份和日期
        MonthDay n = MonthDay.from(now);
        System.out.println(bir.equals(n));

6.Instant基本用法:

        //获取一个Instant对象
        Instant instant = Instant.now();
        System.out.println(instant);

        //获取当前系统时区时间
        Instant instant1 = Instant.now();
        System.out.println(instant1.atZone(ZoneId.systemDefault()));
        //因为我们是在东八区,所以时间需要加8个小时
        Instant instant2 = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
        System.out.println("instant2:"+instant2);
        Instant instant3 = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(0));
        System.out.println("instant3:"+instant3);
        //返回Date对象

        Date date1 = Date.from(instant1);
        System.out.println(date1);
        Date date2 = Date.from(instant2);
        System.out.println(date2);
        Date date3 = Date.from(instant3);
        System.out.println(date3);

通过结果我们可以发现,instant获取时间默认是世界时间,如果想调整成本地时间需要加八个小时,但是如果转换成Date类型,则无需调整时间,内部会自动帮我们修改时区。

7.DateTimeFormatter基本用法:

        //获得本地此时时间
        LocalDateTime time = LocalDateTime.now();
        System.out.println(time);

        //解析/格式化器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a");
        //正向格式化时间
        String t1 = formatter.format(time);
        System.out.println(t1);

        //逆向格式化时间
        String t2 = time.format(formatter);
        System.out.println(t2);

        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //解析时间
        LocalDateTime dateTime = LocalDateTime.parse("2020-01-01 12:12:15",formatter1);
        System.out.println(dateTime);

此可见,我们正逆向格式化

8.Period基础用法:

计算时间间隔差异

        LocalDate date1 = LocalDate.now();
        System.out.println(date1);

        LocalDate bir = LocalDate.of(2000,1,1);
        System.out.println(bir);

        Period period = Period.between(bir,date1);
        System.out.println(period.getYears());
        System.out.println(period.getMonths());
        System.out.println(period.getDays());

我们可以看到时间间隔了22年3个月24天,需要注意的一点是,between的参数是第二个参数减去第一个参数。

9.Duration的基础用法:

计算时间间隔差异

        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        LocalDateTime bir = LocalDateTime.of(2000,1,1,00,00,00);
        System.out.println(bir);

        Duration duration = Duration.between(bir,now);
        System.out.println(duration.toDays());
        System.out.println(duration.toHours());
        System.out.println(duration.toMinutes());
        System.out.println(duration.toMillis());
        System.out.println(duration.toNanos());

我们可以通过duration计算出时间间隔了多少天,多少小时,多少分钟。。。

注意这里的between用的也是第二个参数减第一个参数

10.ChronoUnit基础用法:

这是jdk8为我们封装好的一个时间工具类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗头实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值