副标题#e#
public static Instant now()
public static Instant now(Clock clock)
//根据毫秒生成Instant
public static Instant ofEpochMilli(long epochMilli)
//根据秒生成Instant,外附加纳秒单位的数值
public static Instant ofEpochSecond(long epochSecond, long nanoAdjustment)
//text的格式:2021-01-04T06:37:53.743Z
public static Instant parse(CharSequence text)
//计算与Temporal相隔的时间差,以TemporalUnit为单位度量
public long until(Temporal endExclusive, TemporalUnit unit)
时间戳的创建
Instant instant = Instant.now();
System.out.println(instant);
instant = Instant.now(Clock.systemDefaultZone());
System.out.println(instant);
//和Date的相互转换
instant = Instant.ofEpochMilli(new Date().getTime());
System.out.println(instant);
//根据字符串生成时间,支持到纳秒级别
instant = Instant.parse("1995-10-23T10:12:35.999999999Z");
System.out.println(instant);
//根据秒和偏差的纳秒 创建时间戳
Instant preInstant = Instant.ofEpochSecond(1609741558,1);
//过去时间和当前时间的相差值,可以指定单位TemporalUnit
System.out.println(preInstant.until(Instant.now(), ChronoUnit.MINUTES));
—————输出结果————————
2021-01-04T06:37:53.743Z
2021-01-04T06:37:53.795Z
2021-01-04T06:37:53.795Z
1995-10-23T10:12:35.999999999Z
2021-01-04T06:25:58.000000001Z
2021-01-04T06:37:53.798Z
11
Instant的使用
Instant instant = Instant.now();
//设置时区为America/El_Salvador(美国)
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("America/El_Salvador"));
System.out.println(zonedDateTime);
//设置时区为偏移-6的时区(美国)
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(-6));
System.out.println(offsetDateTime);
//天数加2,分钟数减1。月数设定为12月
Instant fixInstant = instant.minus(1, ChronoUnit.MINUTES)
.plus(2, ChronoUnit.DAYS);
System.out.println(instant);
System.out.println(fixInstant);
—————输出结果—————–
2021-01-04T00:53:01.895-06:00[America/El_Salvador]
2021-01-04T00:53:01.895-06:00
2021-01-04T06:53:01.895Z
2021-01-06T06:52:01.895Z
LocalTime
LocalTime是用来操作时分秒的类,外加精确到纳秒级别;无时区概念,转Instant需要先设置时区
LocalTime的构造方法
public static LocalTime now()
public static LocalTime of(int hour, int minute, int second, int nanoOfSecond)
//距离凌晨的秒数
public static LocalTime ofSecondOfDay(long secondOfDay)
//距离凌晨的纳秒数
public static LocalTime ofNanoOfDay(long nanoOfDay)
public static LocalTime parse(CharSequence text, DateTimeFormatter formatter)
//jdk9
public static LocalTime ofInstant(Instant instant, ZoneId zone)
LocalTime与其他时间类的转换
public LocalDateTime atDate(LocalDate date)
public OffsetTime atOffset(ZoneOffset offset)
public long toEpochSecond(LocalDate date, ZoneOffset offset)
LocalTime创建示例
// 1的单位是纳秒
LocalTime localTime = LocalTime.of(12, 12, 12, 1);
System.out.println(localTime);
localTime = LocalTime.ofSecondOfDay(60 * 60 * 12 + 60 * 12);
System.out.println(localTime);
localTime = LocalTime.parse("12:12:12", DateTimeFormatter.ISO_TIME);
System.out.println(localTime);
—————输出结果—————–
12:12:12.000000001
12:12
12:12:12
LocalTime的常用处理方法
LocalTime localTime = LocalTime.of(12, 12, 12, 1);
System.out.println(localTime);
//拼接日期,生成日期时间
LocalDateTime dateTime = localTime.atDate(LocalDate.now());
System.out.println(dateTime);
//设定时区,时间量不变
OffsetTime offsetTime = LocalTime.now().atOffset(ZoneOffset.ofHours(-6));
System.out.println(offsetTime);
//当前时间加日期,并设置时区为offset
long seconds = LocalTime.now().toEpochSecond(LocalDate.now(), ZoneOffset.ofHours(-6));
System.out.println(seconds);
—————输出结果—————–
12:12:12.000000001
2021-01-04T12:12:12.000000001
16:29:33.917387700-06:00
1609799373
LocalDate
LocalDate是用来操作年月日的类;表示的时间单位是截止到日,不包括小时及后面的单位
public static LocalDate now()
#p#副标题#e#
public static LocalDate of(int year, int month, int dayOfMonth)
public static LocalDate ofInstant(Instant instant, ZoneId zone)
//当天是当月的第几天
public int getDayOfMonth()
//当天是当年的第几天
public int getDayOfYear()
//当天是当周的第几天(1~7)
public DayOfWeek getDayOfWeek()
//是否闰年
public boolean isLeapYear()
public LocalDateTime atTime(LocalTime time)
//设置时间为今天的凌晨
public LocalDateTime atStartOfDay()
//以下两个方法是jdk9,获取当前时间到endExclusive的每一个日期
public Stream<LocalDate> datesUntil(LocalDate endExclusive)
public Stream<LocalDate> datesUntil(LocalDate endExclusive, Period step)