文章目录
 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")
 
时间戳转换时间点
 
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
); 
         LocalDateTime ldt 
= LocalDateTime
.parse("2019-08-01 17:07:05",df
);  
         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
);