java plusday_JAVA8 新时间类的操作

package da.test3.java8;

import java.time.DayOfWeek;

import java.time.Duration;

import java.time.Instant;

import java.time.LocalDate;

import java.time.LocalDateTime;

import java.time.LocalTime;

import java.time.OffsetDateTime;

import java.time.Period;

import java.time.ZoneId;

import java.time.ZoneOffset;

import java.time.ZonedDateTime;

import java.time.format.DateTimeFormatter;

import java.time.temporal.TemporalAdjusters;

import java.util.Set;

import org.junit.Test;

public class TestLocalDateTime {

// 6.ZonedDate、ZonedTime、ZonedDateTime : 带时区的时间或日期

@Test

public void test8() {

LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));

System.out.println(ldt);

LocalDateTime ldt2 = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));

ZonedDateTime zone = ldt2.atZone(ZoneId.of("Asia/Shanghai"));

System.out.println(zone);

}

@Test

public void test7() {

Set zoneIds = ZoneId.getAvailableZoneIds();

zoneIds.forEach(System.out::println);

}

// 5. DateTimeFormatter : 解析和格式化日期或时间

@Test

public void test6() {

DateTimeFormatter dtf = DateTimeFormatter.ISO_DATE;

LocalDateTime ldt = LocalDateTime.now();

String str = ldt.format(dtf);

System.out.println(str);

System.out.println("-----------------------");

DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

String newDate = dtf2.format(ldt);

System.out.println(newDate);

LocalDateTime ldt2 = LocalDateTime.parse(newDate, dtf2);

System.out.println(ldt2);

}

// 4. TemporalAdjuster : 时间校正器

@Test

public void test5() {

LocalDateTime ldt = LocalDateTime.now();

System.out.println(ldt);

LocalDateTime ldt2 = ldt.withDayOfMonth(10);

System.out.println(ldt2);

LocalDateTime ldt3 = ldt.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));

System.out.println(ldt3);

// 自定义:下一个工作日

LocalDate ld = LocalDate.now().with((l) -> {

LocalDate ld1 = (LocalDate) l;

DayOfWeek dow = ld1.getDayOfWeek();

if (dow.equals(DayOfWeek.FRIDAY)) {

return ld1.plusDays(3);

} else if (dow.equals(DayOfWeek.SATURDAY)) {

return ld1.plusDays(2);

} else {

return ld1.plusDays(1);

}

});

System.out.println("下一个工作日是:" + ld);

}

// 3.

// Duration : 用于计算两个“时间”间隔

// Period : 用于计算两个“日期”间隔

@Test

public void test4() {

LocalDate ld1 = LocalDate.now();

LocalDate ld2 = LocalDate.of(2014, 12, 21);

Period period = Period.between(ld2, ld1);

System.out.println(period);

System.out.println(period.getYears() + "-" + period.getMonths() + "-" + period.getDays());

}

@Test

public void test3() {

Instant ins1 = Instant.now();

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

Instant ins2 = Instant.now();

Duration between = Duration.between(ins1, ins2);

System.out.println(between.getSeconds());

LocalTime lt1 = LocalTime.now();

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

LocalTime lt2 = LocalTime.now();

System.out.println(Duration.between(lt1, lt2).toMillis());

}

// 2. Instant : 时间戳。 (使用 Unix 元年 1970年1月1日 00:00:00 所经历的毫秒值)

@Test

public void test2() {

Instant it = Instant.now();// 默认使用 UTC 时区

System.out.println(it);

OffsetDateTime odt = it.atOffset(ZoneOffset.ofHours(8));

System.out.println(odt);

System.out.println(it.toEpochMilli());

Instant it2 = Instant.ofEpochSecond(1);

System.out.println(it2);

}

// 1. LocalDate、LocalTime、LocalDateTime

@Test

public void test1() {

LocalDateTime ldt = LocalDateTime.now();

System.out.println(ldt);

LocalDateTime ldt2 = LocalDateTime.of(2016, 11, 11, 13, 25, 14);

System.out.println(ldt2);

LocalDateTime ldt3 = ldt.plusYears(2);

System.out.println(ldt3);

LocalDateTime ldt4 = ldt.minusMonths(2);

System.out.println(ldt4);

System.out.println(ldt.getYear());

System.out.println(ldt.getMonthValue());

System.out.println(ldt.getDayOfMonth());

System.out.println(ldt.getHour());

System.out.println(ldt.getMinute());

System.out.println(ldt.getSecond());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值