常用 Java API BigDemical,JDK1.8 时间工具

常用 Java API

BigDemical

  • 目标 掌握BigDemical的使用,解决小数运算失真的问题。
    BigDemical常见用法
package com.example.demo;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @author 14590
 */
public class BigDemicalDemo {
    public static void main(String[] args) {
        double a = 0.1;
        double b = 0.2;

        // 将他们转成字符串在封装成BigDemical 对象
        /*BigDecimal a1 = new BigDecimal(Double.toString(a));
        BigDecimal b1 = new BigDecimal(Double.toString(b));*/

        // 底层将 double 转成字符串,再转换成 BigDemical 对象
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);
        // 加
        BigDecimal add = a1.add(b1);
        // 减
        BigDecimal subtract = a1.subtract(b1);
        // 乘法
        BigDecimal multiply = a1.multiply(b1);
        System.out.println(add);
        System.out.println(subtract);
        System.out.println(multiply);

        /**
         * 除法
         * 当结果 是无穷小数,需要规定精度位
         */
        BigDecimal divide = a1.divide(b1);

        BigDecimal i = BigDecimal.valueOf(0.1);
        BigDecimal j = BigDecimal.valueOf(0.3);
        // 四舍五入 RoundingMode.HALF_DOWN
        BigDecimal divide1 = i.divide(j,2,RoundingMode.HALF_DOWN);
        System.out.println(divide1);
        System.out.println(divide1.doubleValue());

        // 比较 -1 小于 0 等于 1 大于
        BigDecimal a2 = BigDecimal.valueOf(0.1);
        BigDecimal b2 = BigDecimal.valueOf(0.1);
        System.out.println(a2.compareTo(b2));
    }
}

新增时间工具

在这里插入图片描述

LocalDate

在这里插入图片描述
在这里插入图片描述

package com.example.demo.jdkAfter8;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.TemporalField;

public class LocalDateDemo {
    public static void main(String[] args) {
        /**
         * 传统的 Date 工具 设计不合理(淘汰)
         * 1, 设计不合理
         * 2,修改过后会的是最初
         */

        /**
         * 新增 时间工具
         */
        // 获取本地日期
        LocalDate localDate = LocalDate.now();
        // 时间
        LocalTime localTime = LocalTime.now();
        // 日期加时间
        LocalDateTime localDateTime = LocalDateTime.now();

        System.out.println(localDate);
        System.out.println(localDate.getYear());
        System.out.println(localDate.getMonthValue());
        System.out.println(localDate.getDayOfMonth());

        // 修改时间  withYear,他是返回新的日期对象
        LocalDate localDate1 = localDate.withYear(2009);
        System.out.println(localDate1+" "+ localDate);  // 2009-09-10 2023-09-10

        // 加年
        LocalDate localDate2 = localDate.plusYears(2);
        System.out.println(localDate2); // 2025-09-10

        // 减法  minusYears
        LocalDate localDate3 = localDate.minusYears(2);

        // 获取指定时间对象
        LocalDate of = LocalDate.of(2099, 12, 12);
        System.out.println(of);

        // 判断2个日期对象,是否相等,在前在后 equals,isBefore,isAfter
        System.out.println(localDate.isBefore(localDate1));
        System.out.println(localDate.isAfter(localDate2));


        System.out.println(localTime);
        System.out.println(localDateTime);
    }
}

LocalTime 与 LocalDate 相同,只是记录时分秒与纳秒

在这里插入图片描述

LocalDateTime 包含日期与时分秒等

在这里插入图片描述

  • 相当于 将前面的2个总结起来的
  • 区别在于
    在这里插入图片描述

带时区的时间

package com.example.demo.jdkAfter8;

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class ZoneIdDemo {
    public static void main(String[] args) {
        ZoneId zoneId = ZoneId.systemDefault(); // 系统默认时区
        System.out.println(zoneId); // Asia/Shanghai  洲名/城市名

        // 打印所有时区
        System.out.println(ZoneId.getAvailableZoneIds());

        // 将某个时间ID 封装成 zoneID 对象
        ZoneId of = ZoneId.of("Europe/Monaco");

        // 带时间的时区,默认系统当前时间
        ZonedDateTime now = ZonedDateTime.now(of);
        // 2023-09-10T09:29:42.268+02:00[Europe/Monaco]
        System.out.println(now);

        // 世界标准时间
        ZonedDateTime now1 = ZonedDateTime.now(Clock.systemUTC());
        // 2023-09-10T07:32:04.988Z
        System.out.println(now1);
    }
}


Instant 时间线上的某个时刻/时间戳

在这里插入图片描述

DateTimeFormatter

在这里插入图片描述

period

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值