package org.westos.demo;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
* @author lwj
* @date 2020/6/15 18:32
*/
public class MyTest {
public static void main(String[] args) {
/*
Date
SimpleDateFormat
Calendar
线程不安全的API,JDK1.8新增了一套时间日期API
*/
/*
LocalDate:年月日
LocalTime:时分秒
LocalDateTime:年月日时分秒
获取对象的方法:1、now()静态方法;2、of静态方法
*/
LocalDateTime now = LocalDateTime.now();
//获取当前的年月日时分秒
System.out.println(now);
//2020-06-15T18:37:30.516
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
//2020-06-15
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//18:37:30.516
//指定年月日时分秒
LocalDateTime localDateTime = LocalDateTime.of(2020, 6, 15, 18, 40, 12);
System.out.println(localDateTime);
//2020-06-15T18:40:12
LocalDate localDate1 = LocalDate.of(2020, 8, 31);
System.out.println(localDate1);
//2020-08-31
LocalTime localTime1 = LocalTime.of(12, 34, 56);
System.out.println(localTime1);
//12:34:56
}
}
获取年月日,时分秒:
package org.westos.demo;
import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.Month;
/**
* @author lwj
* @date 2020/6/15 18:40
*/
public class MyTest2 {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.now();
int year = localDateTime.getYear();
//获取单独的年份
System.out.println(year);
//2020
Month month = localDateTime.getMonth();
//Month是枚举类型enum,从一月到十二月
System.out.println(month);
//JUNE
//输出枚举类的实例,默认打印实例的名称
int monthValue = localDateTime.getMonthValue();
System.out.println(monthValue);
//6
int dayOfMonth = localDateTime.getDayOfMonth();
System.out.println(dayOfMonth);
//15
int hour = localDateTime.getHour();
System.out.println(hour);
//18
int minute = localDateTime.getMinute();
System.out.println(minute);
//43
int second = localDateTime.getSecond();
System.out.println(second);
//22
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
//DayOfWeek是枚举类型enum,从星期一到星期日
System.out.println(dayOfWeek);
//MONDAY 星期一
int dayOfYear = localDateTime.getDayOfYear();
System.out.println(dayOfYear);
//167
}
}
格式化日期:
package org.westos.demo;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author lwj
* @date 2020/6/15 18:50
*/
public class MyTest3 {
public static void main(String[] args) {
//格式化日期
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
//2020-06-15T18:51:13.901
String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"));
//格式化日期:format(DateTimeFormatter实例)
System.out.println(format);
//2020年06月15日 18:53:46
}
}
解析日期字符串:
package org.westos.demo;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author lwj
* @date 2020/6/15 19:28
*/
public class MyTest6 {
public static void main(String[] args) {
//解析日期字符串
String s = "2020-06-15 19:30:20";
LocalDateTime localDateTime = LocalDateTime.parse(s, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(localDateTime);
//2020-06-15T19:30:20
}
}
转换:
package org.westos.demo;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
/**
* @author lwj
* @date 2020/6/15 18:58
*/
public class MyTest4 {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();
//LocalDateTime转LocalDate
System.out.println(localDate);
//2020-06-15
LocalTime localTime = localDateTime.toLocalTime();
//LocalDateTime转LocalTime
System.out.println(localTime);
//18:59:40.575
}
}
判断
package org.westos.demo;
import java.time.LocalDate;
/**
* @author lwj
* @date 2020/6/15 19:00
*/
public class MyTest5 {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
LocalDate localDate = LocalDate.of(2019, 9, 22);
System.out.println(now.isAfter(localDate));
//判断一个日期在不在另一个日期之后
//true
System.out.println(localDate.isBefore(now));
//判断一个日期在不在另一个日期之前
//true
//判断一个年份是不是闰年
System.out.println(now.isLeapYear());
//true
}
}
加减时间
package org.westos.demo;
import java.time.LocalDateTime;
/**
* @author lwj
* @date 2020/6/15 19:39
*/
public class MyTest7 {
public static void main(String[] args) {
//加时间
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
//2020-06-15T19:40:36.233
LocalDateTime localDateTime = now.plusMinutes(3);
System.out.println(localDateTime);
//2020-06-15T19:43:36.233
LocalDateTime localDateTime1 = localDateTime.plusDays(3);
System.out.println(localDateTime1);
//2020-06-18T19:43:36.233
//减时间
LocalDateTime localDateTime2 = now.minusDays(2);
System.out.println(localDateTime2);
//2020-06-13T19:40:36.233
}
}
指定日期,with系列:
package org.westos.demo;
import java.time.LocalDateTime;
/**
* @author lwj
* @date 2020/6/15 19:45
*/
public class MyTest8 {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
LocalDateTime localDateTime = now.withYear(2019);
//指定年份
LocalDateTime localDateTime1 = localDateTime.withMonth(11);
System.out.println(localDateTime1);
//2019-11-15T19:47:07.539
}
}
package org.westos.demo;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAdjusters;
/**
* @author lwj
* @date 2020/6/15 20:25
*/
public class MyDemo {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
//TemporalAdjuster 接口
//TemporalAdjusters工具类中的方法会返回接口的子类对象
LocalDate with = now.with(TemporalAdjusters.firstDayOfMonth());
//指定日期,指定为当月的第一天
System.out.println(with);
//2020-06-01
LocalDate with1 = now.with(TemporalAdjusters.lastDayOfMonth());
//指定日期,指定为当月的最后一天
System.out.println(with1);
//2020-06-30
LocalDate with2 = now.with(TemporalAdjusters.firstInMonth(DayOfWeek.SUNDAY));
//指定日期,指定为本月的第一个周日
System.out.println(with2);
//2020-06-07
LocalDate with3 = now.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
//指定日期,指定为下周周一
System.out.println(with3);
//2020-06-22
}
}
package org.westos.demo2;
import java.time.Instant;
/**
* @author lwj
* @date 2020/6/15 20:00
*/
public class MyTest {
public static void main(String[] args) {
//时间戳类Instant
Instant now = Instant.now();
System.out.println(now);
//2020-06-15T12:03:56.522Z
long l = now.toEpochMilli();
//转换为毫秒
System.out.println(l);
//1592222636522
System.out.println(System.currentTimeMillis());
//1592222636577
System.out.println(now.getEpochSecond());
//时间戳转为以秒为单位
//1592222636
}
}
package org.westos.demo2;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
/**
* @author lwj
* @date 2020/6/15 20:05
*/
public class MyTest2 {
public static void main(String[] args) {
Instant now = Instant.now();
System.out.println(now);
//不是本地时间
//2020-06-15T12:08:01.727Z
OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
//设置偏移
System.out.println(offsetDateTime);
//2020-06-15T20:08:01.727+08:00
}
}
package org.westos.demo2;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
/**
* @author lwj
* @date 2020/6/15 20:10
*/
public class MyTest3 {
public static void main(String[] args) {
//ZoneId 世界时区类
ZoneId zoneId = ZoneId.systemDefault();
//获取系统的默认时区编号
System.out.println(zoneId);
//Asia/Shanghai
System.out.println(ZoneId.getAvailableZoneIds().size());
//获取世界所有时区编号
//600
ZoneId.getAvailableZoneIds().forEach(System.out::println);
LocalDateTime japan = LocalDateTime.now(ZoneId.of("Japan"));
System.out.println(japan);
//2020-06-15T21:17:19.523
//此刻日本的时间,在now方法中指定时区
LocalDateTime egypt = LocalDateTime.now(ZoneId.of("Egypt"));
System.out.println(egypt);
//2020-06-15T14:17:14.495
//埃及时间
Instant instant = Instant.ofEpochMilli(1000);
//给计算机元年增加毫秒数
System.out.println(instant);
//1970-01-01T00:00:01Z
Instant instant1 = Instant.ofEpochSecond(60);
//给计算机元年增加秒数
System.out.println(instant1);
//1970-01-01T00:01:00Z
}
}
package org.westos.demo3;
import java.time.Duration;
import java.time.Instant;
/**
* @author lwj
* @date 2020/6/15 20:39
*/
public class MyTest {
public static void main(String[] args) {
//long start = System.currentTimeMillis();
Instant start = Instant.now();
for (int i = 0; i < 20000; i++) {
System.out.println(i);
}
Instant end = Instant.now();
//获取两个时间戳的间隔
Duration duration = Duration.between(start, end);
//public static Duration between(Temporal startInclusive, Temporal endExclusive)
//Instant是Temporal接口的子类
long l = duration.toMillis();
System.out.println(l);
//139
}
}
package org.westos.demo3;
import java.time.Instant;
import java.time.LocalDate;
import java.time.Period;
/**
* @author lwj
* @date 2020/6/15 20:44
*/
public class MyTest2 {
public static void main(String[] args) {
LocalDate birthday = LocalDate.of(1998, 11, 8);
LocalDate now = LocalDate.now();
Period between = Period.between(birthday, now);
//获取两个日期的间隔
//public static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive)
int years = between.getYears();
int months = between.getMonths();
int days = between.getDays();
System.out.println("从出生到现在已经" + years + "年" + months + "月" + days + "天");
//从出生到现在已经21年7月7天
}
}
package org.westos.demo3;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
/**
* @author lwj
* @date 2020/6/15 21:05
*/
public class MyTest3 {
public static void main(String[] args) {
/*
ZonedDateTime
*/
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);
//2020-06-15T21:07:13.839+08:00[Asia/Shanghai]
LocalDateTime now1 = LocalDateTime.now();
System.out.println(now1);
//2020-06-15T21:07:13.840
}
}
32、JDK1.8新的时间日期类(LocalDateTime、DateTimeFormatter、Instant、ZoneId、Duration、Period、ZonedDateTime)
原文:https://www.cnblogs.com/shawnyue-08/p/13137980.html