JAVA基础知识之Time总结
您有任何问题或意见都可以在评论区回复哦,欢迎大家一起来讨论,共同学习进步
新时间类型LocalDateTime,OffsetDateTime,LocalDate
//截取到天,小时
System.out.println(LocalDateTime.now().truncatedTo(ChronoUnit.DAYS));
System.out.println(LocalDateTime.now().truncatedTo(ChronoUnit.HOURS));
//输出
2020-05-06T00:00
2020-05-06T13:00
//设置小时为14点
System.out.println(LocalDateTime.now().withHour(14));
//减去12天
System.out.println(LocalDateTime.now().minusDays(12));
//增加12小时
System.out.println(LocalDateTime.now().plusHours(12));
//设定0时区时间,截取到整日,设定12点
OffsetDateTime.now(ZoneOffset.of("+00:00")).truncatedTo(ChronoUnit.DAYS).withHour(12)
//获取上海时区的时间
OffsetDateTime.now(ZoneId.of("Asia/Shanghai"))//实间转换
LocalDate loc = LocalDate.parse("2020-01-02");
System.out.println(loc);
DateTimeFormatter usDateformatter = DateTimeFormatter.ofPattern("MM-dd-yyyy");
System.out.println(usDateformatter.format(loc));
//输出
2020-01-02
01-02-2020
//当parse的格式不是本地时间格式是,需要通过对应的formatter格式
LocalDate newDate = LocalDate.parse("07-04-2020",usDateformatter);
System.out.println(newDate);
//输出
2020-07-04
旧版本time类型Calendar,Date
Calendar cal = Calendar.getInstance();
cal.set(2020,1,26);
Date date = cal.getTime();
System.out.println(date);
//输出
Wed Feb 26 22:01:51 CST 2020
cal.add(Calendar.DAY_OF_MONTH,7);
System.out.println(cal.getTime());
//输出
Wed Mar 04 22:01:51 CST 2020
新Time类型Instant是不可改变的
System.out.println(Instant.MIN);
System.out.println(Instant.now());
System.out.println(Instant.MAX);
//输出
-1000000000-01-01T00:00:00Z
2020-05-17T14:10:23.739Z
+1000000000-12-31T23:59:59.999999999Z
Duration,包括toDays(),toHours(),toMinutes(),toNanos()等方法,minus()减去,plus增加,multipliedBy乘以
Instant start = Instant.now();
Thread.sleep(1);
Instant end = Instant.now();
Duration duration = Duration.between(start,end);
long millionSeconds = duration.toMillis();
System.out.println(millionSeconds);
//输出
1
LocalDate
【JAVA基础知识之Time总结】TemporalAdjusters包括的方法:firstDayOfMonth,lastDayOfMonth,firstDayOfYear,lastDayOfYear,firstDayOfNextMonth,firstDayOfNextYear
firstInMonth(DayOfWeek.SUNDAY,lastInMonth(DayOfWeek.SUNDAY),dayOfWeekInMonth(2,DayOfWeek.SUNDAY)
next(DayOfWeek.SUNDAY),nextOrSame(DayOfWeek.SUNDAY),previous(DayOfWeek.SUNDAY),previousOrSame(DayOfWeek.SUNDAY)
LocalDate now = LocalDate.now();
LocalDate dateOfBirth = LocalDate.of(1987, Month.NOVEMBER, 23);
System.out.println(dateOfBirth);
System.out.println(now);
//输出
1987-11-23
2020-05-18
Period p = dateOfBirth.until(now);
System.out.println("Years:"+p.getYears());
//输出
Years:32
Long days = dateOfBirth.until(now,ChronoUnit.DAYS);
System.out.println("Days:"+days);
//输出
Days:11865
//其中的month差距只是余数,不是和上面的一样共计多少个月,而是除去整年后差的月数
System.out.println(p.get(ChronoUnit.YEARS));
System.out.println(p.get(ChronoUnit.MONTHS));
//输出
32
5
LocalDate nextSunday = LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
System.out.println(nextSunday);
//输出
2020-05-24
LocalTime
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
System.out.println(localTime.plusHours(8));
System.out.println(LocalTime.of(20,10));
//输出
20:28:59.823
04:30:25.367
20:10
ZonedDateTime
Set allZoneIds = ZoneId.getAvailableZoneIds();
for(String zoneId:allZoneIds){
if(zoneId.contains("America")){
System.out.println(zoneId);
}
}
//输出很多暂时忽略
ZoneId ukTZ = ZoneId.of("Asia/Shanghai");
System.out.println(ukTZ);
ZonedDateTime currentMetting = ZonedDateTime.of(LocalDate.of(2020,Month.JUNE,18),
LocalTime.of(10,0),ZoneId.of("Asia/Shanghai"));
ZonedDateTime nextMetting = currentMetting.plus(Period.ofMonths(1));
ZonedDateTime nextUsMeeting = nextMetting.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println(currentMetting);
System.out.println(nextMetting);
System.out.println(nextUsMeeting);
//输出
2020-06-18T10:00+08:00[Asia/Shanghai]
2020-07-18T10:00+08:00[Asia/Shanghai]
2020-07-17T22:00-04:00[America/New_York]
DateTimeFormatter
System.out.println("ISO_DATE_TIME="+DateTimeFormatter.ISO_DATE_TIME.format(currentMetting));
System.out.println("RFC_1123_DATE_TIME="+DateTimeFormatter.RFC_1123_DATE_TIME.format(currentMetting));
//输出
ISO_DATE_TIME=2020-06-18T10:00:00+08:00[Asia/Shanghai]
RFC_1123_DATE_TIME=Thu, 18 Jun 2020 10:00:00 +0800
老版本时间和新版本时间转换
Instant instant = Instant.now();
Date date = Date.from(instant);
instant = date.toInstant();
Timestamp timestamp = Timestamp.from(instant);
instant = timestamp.toInstant();
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天