BigDecimal
//初始化(初始化的值一点要是字符串类型,不然一样会丢失精度)
BigDecimal num1 = new BigDecimal("0");
BigDecimal num2 = new BigDecimal("1");
//加
BigDecimal add = num1.add(num2);
//减
BigDecimal subtract = num1.subtract(num2);
//乘
BigDecimal multiply = num1.multiply(num2);
//除
BigDecimal multiply = num1.divide(num2);
//除(进阶)
//divide(被除数,保留几位小数,使用保留模式)
//BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2
//BigDecimal.ROUND_UP:直接进位,比如1.21如果保留1位小数,得到的就是1.3
//BigDecimal.ROUND_HALF_UP:四舍五入,2.35保留1位,变成2.4
//BigDecimal.ROUND_HALF_DOWN:四舍五入,2.35保留1位,变成2.3
//BigDecimal.ROUND_HALF_EVEN:四舍五入,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入
BigDecimal multiply1 = num1.divide(num2,2,BigDecimal.ROUND_HALF_UP);
//绝对值
BigDecimal abs = num1.abs();
//比较两个数据大小compareTo
// 0 表示相等、大于0是num1大、小于0是num2大
int compareTo = num1.compareTo(num2);
Java8新日期格式
LocalDate
日期处理类
//获取当前时间
LocalDate now = LocalDate.now();
//指定日期
LocalDate parse = LocalDate.parse("2021-11-08",DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate parse1 = LocalDate.of(2021,11,8);
//获取年
int year = parse.getYear();
//获取月
int month = parse.getMonth();
//获取日
int day = parse.getDayOfMonth();
//获取星期
DayOfWeek dayOfWeek = localDate.getDayOfWeek();
//加时间
//plusYears(年)、plusMonths(月)、plusDays(日)、plusWeeks(星期)
LocalDate plusDays = now.plusDays(5);
//减时间
//minusYears(年)、minusMonths(月)、minusDays(日)、minusWeeks(星期)
LocalDate minusDays = now.minusDays(5);
//两个时间差
//period.getYears()相差多少年、period.getMonths()月、period.getDays()日
Period period = Period.between(parse, parse1);
//两个时间比较
//parse大于parse1是true
boolena isBefore = parse.isAfter(parse1);
//parse小于parse1是true
boolena isBefore = parse.isBefore(parse1);
//我个人比较喜欢用万能的compareTo
// 0 表示相等、大于0是parse大、小于0是parse1大
int compareTo = parse.compareTo(parse1);
LocalTime
时间处理类(下面只写和LocalDate有区别的方法)
//指定日期
LocalTime parse = LocalTime.parse("11:30:00",DateTimeFormatter.ofPattern("HH:mm:ss"));
LocalTime parse1 = LocalTime.of(12,00,00);
//获取小时
int hour = parse.getHour();
//获取分钟
int minute = parse.getMinute();
//获取秒
int second = parse.getSecond();
//比较大小和加减时间参考 LocalDate 的方法
//两个时间差
//duration.toNanos()相差多少纳秒、duration.toMillis()毫秒、getSeconds()秒、
//duration.toMinutes()分钟、duration.toHours()小时、duration.toDays()天
Duration duration = Duration.between(parse, parse1);
LocalDateTime
//指定日期
LocalDateTime parse = LocalDateTime.parse("2021-11-08 11:30:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime parse1 = LocalDateTime.of(2021,11,8,12,00,00);
LocalDateTime parse2 = LocalDateTime.of(LocalDate.now(),LocalTime.now());
//两个时间差
//duration.toNanos()相差多少纳秒、duration.toMillis()毫秒、getSeconds()秒、
//duration.toMinutes()分钟、duration.toHours()小时、duration.toDays()天
Duration duration = Duration.between(parse, parse1);
//剩下的方法参考 LocalDate和LocalTime
LocalDateTime获取时间戳
//获取秒时间戳
Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
//获取毫秒时间戳
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
LocalDateTime与String互转
//时间转string
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);
//string转时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse("2021-11-08 11:30:00", formatter);
LocalDateTime与Date互转
//LocalDateTime转Date
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
}
//Date转LocalDateTime
public static LocalDateTime dateToLocalDateTime(Date date) {
return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
}