关于java里面的时间

    xiaoxiao2022-07-13  180

    文章目录

    LocalDateTImepostgre SQL数据库将LocalDateTime转为字符串求某个时间点的整点求按小时分组的最后一个时间点在java层面求某个时间的整点测试时间接口求今年的起始日期和结束日期字符串转LocalDate字符串与LocalDateTIme互换生成两个日期的集合获取时间差获取上个月最开始的时间

    LocalDateTIme

    获取当前时间后一年的时间戳

    LocalDateTime.now().plusYears(1).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()

    获取当前时间的格式化时间

    LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss")

    时间戳转换时间点

    //时区加8 LocalDateTime.ofEpochSecond(this.timestamp, 0, ZoneOffset.ofHours(8));

    postgre SQL数据库

    时间戳转换为时间

    //时间格式 to_timestamp(time) //字符串格式 to_char(to_timestamp(time),'yyyy-MM-dd HH24-MI-SS')

    将LocalDateTime转为字符串

    public PollutantInstatValue getInstantValue(String district, LocalDateTime hour) { String hourString = DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(hour); return mapper.getDistrictInstantValue(district, hourString); }

    求某个时间点的整点

    SELECT date_trunc('hour', timestamp) FROM air_sensor_recode;

    不是四舍五入 同理 整数天的时间点也可也求出来

    求按小时分组的最后一个时间点

    SELECT date_trunc('hour', timestamp) AS hour, last(timestamp, timestamp) as "reportTime" FROM air_sensor_recode GROUP BY hour;

    在java层面求某个时间的整点

    LocalDateTime time = LocalDateTime.of( reportTime.getYear(), reportTime.getMonth(), reportTime.getDayOfMonth(), reportTime.getHour(), 0, 0); //去整点 private LocalDateTime toHourTime(LocalDateTime dateTime) { LocalDate date = dateTime.toLocalDate(); int hour = dateTime.getHour(); return LocalDateTime.of(date, LocalTime.of(hour, 0)); }

    测试时间接口

    GET http://localhost:8080/api/aqi/instant/district?time=2019-07-30T14:00:00```

    求今年的起始日期和结束日期

    LocalDate end = LocalDate.now().with(TemporalAdjusters.lastDayOfYear()); LocalDate start = LocalDate.now().with(TemporalAdjusters.firstDayOfYear()); //转成日期数组 List<LocalDate> dates = Stream.iterate(start, date -> date.plusDays(1)) .limit(ChronoUnit.DAYS.between(start, end)) .collect(Collectors.toList());

    字符串转LocalDate

    LocalDate beginDate = LocalDate.parse(fromDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDate endDate = LocalDate.parse(toDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")); runner.run(()-> { List<LocalDate> dates = Stream.iterate(beginDate, date -> date.plusDays(1)) .limit(ChronoUnit.DAYS.between(beginDate, endDate)) .collect(Collectors.toList()); for (LocalDate date : dates) { for (int hour = 0;hour < 24; hour++) { LocalDateTime now = LocalDateTime.of(date, LocalTime.of(hour, 0)); controller.persistReading(now); } } });

    字符串与LocalDateTIme互换

    public static void main(String[] args) { DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime time = LocalDateTime.now(); String localTime = df.format(time); // 2019-08-01 17:36:52 LocalDateTime ldt = LocalDateTime.parse("2019-08-01 17:07:05",df); //2019-08-01T17:07:05 System.out.println("LocalDateTime转成String类型的时间:"+localTime); System.out.println("String类型的时间转成LocalDateTime:"+ldt); }

    生成两个日期的集合

    LocalDate from = LocalDate.now().minusMonths(1); LocalDate to = LocalDate.now(); List<LocalDate> dates = Stream.iterate(from, date -> date.plusDays(1)) .limit(ChronoUnit.DAYS.between(from, to.plusDays(1))) .collect(Collectors.toList());

    获取时间差

    Duration duration = Duration.between(patrolTrace.getStartTime(),patrolTrace.getEndTime()); long second = duration.toMillis()/1000;

    获取上个月最开始的时间

    LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().minusMonths(1).with(TemporalAdjusters.firstDayOfMonth()).toLocalDate(), LocalTime.MIN);
    最新回复(0)