1、计算出代码块运行的时间
List<Integer> array = new ArrayList<>();
for (int i = 0; i <20000 ; i++) {
array.add(i);
}
Instant start = Instant.now();
List<Integer> collect1 = array.parallelStream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
List<Integer> collect2 = array.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
Instant end = Instant.now();
System.out.println("耗费时间"+ Duration.between( start,end ).toMillis());
System.out.println(collect1); //耗费时间75
System.out.println(collect2); //耗费时间140
2、LocalDate转LocalDateTime 或 localDateTime转LocalDate
//LocalDate转localDateTime
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime1 = localDate.atStartOfDay();
LocalDateTime localDateTime2 = localDate.atTime(23,59,59);
LocalDateTime localDateTime3 = localDate.atTime(LocalTime.now());
System.out.println("localDateTime1:"+localDateTime1);
System.out.println("localDateTime2:"+localDateTime2);
System.out.println("localDateTime3:"+localDateTime3);
// localDateTime1:2021-12-01T00:00
// localDateTime2:2021-12-01T23:59:59
// localDateTime3:2021-12-01T14:39:09.901
//localDateTime转LocalDate
LocalDate localDate1 = localDateTime1.toLocalDate();
System.out.println("localDate1:"+localDate1);
//LocalDateTime倒推3天时间取最小值和最大值
LocalDateTime start1 = LocalDateTime.of(LocalDate.now().minus(3L, ChronoUnit.DAYS), LocalTime.MIN);
LocalDateTime start2 = LocalDateTime.of(LocalDate.now().minus(3L, ChronoUnit.DAYS), LocalTime.MAX);
System.out.println("start1:"+start1);
System.out.println("start2:"+start2);
// start1:2022-02-15T00:00
// start2:2022-02-15T23:59:59.999999999
3、BigDecimal四舍五入保留6位小数(double会丢失精度建议转String)
public static void main(String[] args) throws Exception {
double data1 = 2.3333665;
String data2 = String.valueOf(data1);
BigDecimal bigDecimal1 = new BigDecimal(data1);
System.out.println("bigDecimal1:"+bigDecimal1);
BigDecimal bigDecimal2 = new BigDecimal(data2);
System.out.println("bigDecimal2:"+bigDecimal2);
double result1 = new BigDecimal(data1).setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("result1:"+result1);
double result2 = new BigDecimal(data2).setScale(6, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("result2:"+result2);
// bigDecimal1:2.333366499999999899017666393774561583995819091796875
// bigDecimal2:2.3333665
// result1:2.333366
// result2:2.333367
}
4、String转LocalDate和LocalDateTime
//获取当前时间
System.out.println(LocalDateTime.now());
//String转LocalDate
String time1 = "2021-12-05";
LocalDate bizDate1 = LocalDate.parse(time1, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("====bizDate1:"+bizDate1);
//String转LocalDateTime
String time2 = "2021-12-05 12:45:26";
LocalDateTime bizDate2 = LocalDate.parse(time2, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atStartOfDay();
System.out.println("====bizDate2:"+bizDate2);
// 2021-12-02T16:14:24.048
// ====bizDate1:2021-12-05
// ====bizDate2:2021-12-05T00:00
5、LocalDateTime时间相减计算
//计算出两个时间相差的天数、小时、分钟、秒
public static void main(String[] args) throws Exception {
//time1 - time2
String time1 = "2021-12-05 12:45:26";
String time2 = "2021-12-04 12:45:26";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parse1 = LocalDateTime.parse(time1, df);
LocalDateTime parse2 = LocalDateTime.parse(time2, df);
System.out.println("===获取天数:"+parse2.until(parse1, ChronoUnit.DAYS));
System.out.println("===获取小时:"+parse2.until(parse1, ChronoUnit.HOURS));
System.out.println("===获取分钟:"+parse2.until(parse1, ChronoUnit.MINUTES));
System.out.println("===获取秒:"+parse2.until(parse1, ChronoUnit.SECONDS));
// ===获取天数:1
// ===获取小时:24
// ===获取分钟:1440
// ===获取秒:86400
}
//LocalDateTime判断两个时间的大小
public static void main(String[] args) throws Exception {
String time1 = "2021-12-05 12:45:26";
String time2 = "2021-12-04 12:45:26";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parse1 = LocalDateTime.parse(time1, df);
LocalDateTime parse2 = LocalDateTime.parse(time2, df);
System.out.println(parse1.isBefore(parse2)); // time1 < time2 false
System.out.println(parse1.isAfter(parse2)); // time1 > time2 true
System.out.println(parse1.isEqual(parse2)); // time1 = time2 false
}
/**
* 计算出两个时间戳的相差时间
* 当前时间 - 需要计算的时间 = 结果时间
* @param now 当前时间
* @param end 需要计算的时间
* @return
*/
public static Map<String, Long> calculateTimeDifference(LocalDateTime now, LocalDateTime end) {
Map<String, Long> maps = Maps.newHashMap();
Duration duration = Duration.between(now, end); //now - end = duration
Long days = duration.toDays(); //相差的天数
Long hours = duration.toHours();//相差的小时数
Long minutes = duration.toMinutes();//相差的分钟数
Long millis = duration.toMillis();//相差毫秒数
Long nanos = duration.toNanos();//相差的纳秒数
maps.put("days", days);
maps.put("hours", hours);
maps.put("minutes", minutes);
maps.put("millis", millis);
maps.put("nanos", nanos);
return maps;
}
public static void main(String[] args) {
//获取当前时间再加10分钟
System.out.println(calculateTimeDifference(LocalDateTime.now(), LocalDateTime.now().plusMinutes(10)));
}