各时间api获取当前时间
@Test
public void TestTimeApi() {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println("我是java.sql包下的Timestamp当前日期时间:"+ timestamp);
java.sql.Date date1 = new java.sql.Date(System.currentTimeMillis());
System.out.println("我是java.sql包下的当前日期:"+ date1);
Time time = new Time(System.currentTimeMillis());
System.out.println("我是java.sql包下的当前时间:" + time);
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("我是java8的LocalDateTime当前时间:" + localDateTime);
LocalDate localDate = LocalDate.now();
System.out.println("我是java8的LocalDate当前日期:" + localDate);
LocalTime localTime = LocalTime.now();
System.out.println("我是java8的LocalTime当前时间:" + localTime);
Date date = new Date();
System.out.println("我是java1自带的Date当前时间:"+ date);
Calendar calendar = Calendar.getInstance();
System.out.println("我是java1自带的Calendar当前日期时间:" + calendar.toInstant());
}
java8的常用时间api的常用方法
java.util包中的Date和Calendar具有线程不安全等问题,已不推荐使用
- plus(); 在日期的基础上添加一段时间
LocalDateTime localDateTime = LocalDateTime.now();
Period period = Period.of(1, 2, 3);
LocalDateTime plus = localDateTime.plus(period);
- 更加具体的plusDays(), plusHours(), plusMinutes()等等
其具体作用则是在原有日期上加上年、月、日、时、分、秒等 - minus(); 在日期的基础上减少一段时间
LocalDateTime localDateTime = LocalDateTime.now();
Period period = Period.of(1, 2, 3);
LocalDateTime plus = localDateTime.minus(period);
- 更加具体的minusDays(), minusHours(), minusMinutes()等等
其具体作用则是在原有日期上减少年、月、日、时、分、秒等 - isAfter()与isBefore()
判断两个日期的先后,返回布尔值
boolean after = plus.isAfter(localDateTime);
boolean before = plus.isBefore(localDateTime);
- with(); 修改时间
/**
* ChronoField为枚举类,具体有年月日时分秒等枚举值,第一个参数表示修改的项,第二个参数表示修改后的值
*/
localDateTime.with(ChronoField.DAY_OF_MONTH, 1);
-
withDayofMonth()等等,见下图,表示具体修改某一项
image.png format(); 格式化LocalDateTime类型的数据格式化为字符串
String s1 = localDateTime.format(DateTimeFormatter.BASIC_ISO_DATE);
String s2 = localDateTime.format(DateTimeFormatter.ISO_DATE);
String s3 = localDateTime.format(DateTimeFormatter.ISO_DATE_TIME);
System.out.println(s1+"----"+s2+"------"+s3);
打印结果:20210815----2021-08-15------2021-08-15T18:39:59.5170837
- parse(); 将日期字符串转化成LocalDateTime类型的时间数据
//第二个参数可以不填,默认则为DateTimeFormatter.ISO_DATE_TIME格式
LocalDateTime parsetime3 = LocalDateTime.parse(s3,DateTimeFormatter.ISO_DATE_TIME);
System.out.println(parsetime3);
//打印结果为 2021-08-15T18:52:13.568072
- DateTimeFormatter.ofPattern(),自定义格式化器
String s4 = localDateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
System.out.println("我是s4:"+s4);
LocalDateTime parsetime4 = LocalDateTime.parse(s4, DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
System.out.println("s4:"+parsetime4);
//打印结果:我是s4:2021/08/15 19:04:16 s4:2021-08-15T19:04:16
常用的LocalDateTime与Timestamp数据格式转换方法
Timestamp.valueOf(LocalDateTime localDateTime);
timestamp.toLocalDateTime()
Timestamp timestamp1 = Timestamp.valueOf(parsetime4);
System.out.println("timestamp1:"+timestamp1);
//打印结果:timestamp1: 2021-08-15 19:19:00.0
LocalDateTime localDateTime1 = timestamp1.toLocalDateTime();
System.out.println("localDateTime1:"+ localDateTime1);
//打印结果:localDateTime1: 2021-08-15T19:21:31