简介
JAVA 8 引入新时间API原因是原来的Date类无法支持多线程操作,新时间API支持多线程操作,当java.time包内时间类其值发生改变时,其如同String类,类的实例是不可变的对象,当改变其值的时候就会新生成对象地址,从而改变其对象地址,以保证支持多线程操作。
获取当前的localDateTime
LocalDateTime localDateTime = LocalDateTime.now();
// 结果: 2018-01-23T14:24:15.202
LocalDateTime -> LocalDate
LocalDate localDate = localDateTime.toLocalTime();
// 结果:2018-01-24
LocalDateTime -> timeStamp
Timestamp timestamp = Timestamp.valueOf(localDateTime)
// 结果:2018-01-24 10:38:46.951
String(不规范) -> LocalDateTime
String date1 = "2018-03-28 10:40:14.0";
try {
LocalDateTime localDateTime = Timestamp.valueOf(date1).toLocalDateTime();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(localDateTime.format(dtf));
} catch (Exception e){
e.printStackTrace();
}
long -> LocalDateTime
LocalDateTime createTime = LocalDateTime.ofEpochSecond(onSaleTime / 1000, 0, ZoneOffset.ofHours(8));
mybatis中的应用
添加依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.2</version>
</dependency>
entity:
public class userDto {
//这样会自动将参数转换
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private LocalDate startTime;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private LocalDate endTime;
@RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseBody
public Result<List<User>> findUser(@RequestParam(value = "syncDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate syncDate) {
List<User> userList = userService.findUserByDate(syncDate);
return new Result.Builder<>(userList).setCode(ErrorCode.SUCCESS).build();
}
获取当天数据:
1.时间区间用:between LocalDate and date_add(LocalDate, interval 1 day)
create_time BETWEEN #{syncDate} AND date_add(#{syncDate}, interval 1 day)