Java8日期时间处理

日期时间结构

在这里插入图片描述

项目问题

一,一天时间范围

@Test
public void mm() {
// 获取当前日期
LocalDate nowDate = LocalDate.now();
// 设置当天开始时间
LocalDateTime beginTime = LocalDateTime.of(nowDate, LocalTime.MIN);
Date start = Date.from( beginTime.atZone( ZoneId.systemDefault()).toInstant());
System.out.println(start);
// 设置当天的结束时间
LocalDateTime endTime = LocalDateTime.of(nowDate, LocalTime.MAX);
Date end = Date.from( endTime.atZone( ZoneId.systemDefault()).toInstant());
System.out.println(end);
}

案例

一,获取日期

@Test
public void aa() {
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
System.out.println(localDate.getYear());
System.out.println(localDate.getMonth().getValue());
System.out.println(localDate.getDayOfWeek().getValue());
}

二,获取时间

@Test
public void nn() {
LocalTime localTime = LocalTime.now();
// 获取小时
int hour = localTime.getHour();
int hour1 = localTime.get(ChronoField.HOUR_OF_DAY);
// 获取分
int minute = localTime.getMinute();
int minute1 = localTime.get(ChronoField.MINUTE_OF_HOUR);
// 获取秒
int second = localTime.getSecond();
int second1 = localTime.get(ChronoField.SECOND_OF_MINUTE);
}

三,获取日期时间

@Test
public void bb() {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
System.out.println(localDateTime.getYear());
System.out.println(localDateTime.getMonth());
System.out.println(localDateTime.getDayOfWeek());

}

四,获取带时区的日期时间

@Test
public void gg() {
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);
ZoneId zoneId = ZoneId.of(“America/New_York”);
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime1 = ZonedDateTime.of(localDateTime, zoneId);
System.out.println(zonedDateTime1);
}

五,获取秒数

@Test
public void oo() {
// 创建Instant对象
Instant instant = Instant.now();
// 获取秒数
long currentSecond = instant.getEpochSecond();
// 获取毫秒数
long currentMilli = instant.toEpochMilli();
}

六,获取时间戳

// 在Java 8中获取当前的时间戳
@Test
public void jj() {
Instant timestamp = Instant.now();
System.out.println("What is value of this instant " + timestamp.toEpochMilli());
}

七,处理特定日期

// of
@Test
public void cc() {
LocalDate of = LocalDate.of(2018, 2, 2);
System.out.println(of);
LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
System.out.println(LocalTime.MAX);
LocalDateTime of1 = LocalDateTime.of(2020, 2, 2, 02, 33, 22);
System.out.println(of1);
}

八,时间调整和处理

@Test
public void pp() {
LocalDateTime now = LocalDateTime.now();
// 一年中的五月
LocalDateTime may = now.with(Month.MAY);
// 月的某一天
LocalDateTime dayOfMonth = now.with(ChronoField.DAY_OF_MONTH, 20);
// 月的第一天
LocalDateTime firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
// 月的最后一天
LocalDateTime result = now.with(Month.FEBRUARY).with(TemporalAdjusters.lastDayOfMonth());
System.out.println(“一年中的五月”+may);
System.out.println(“月的某一天”+dayOfMonth);
System.out.println(“月的第一天”+firstDayOfMonth);
System.out.println(“月的最后一天”+result);
}

九, 时间加减

// 向前向后
@Test
public void dd() {
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
// 向后
LocalDate plus = localDate.plus(2, ChronoUnit.YEARS);
System.out.println(plus);
// 向前
LocalDate minus = localDate.minus(2, ChronoUnit.YEARS);
System.out.println(minus);
}

十,时钟

// 时钟
@Test
public void ee() {

System.out.println(System.currentTimeMillis());

System.out.println(new Date().getTime());

// java8
// 根据您的系统时钟返回当前时间并设置为UTC。(默认)
Clock clock = Clock.systemUTC();
System.out.println("Clock : " + clock.millis());

// Returns time based on system clock zone
// 根据系统时钟区返回时间
Clock defaultClock = Clock.systemDefaultZone();
System.out.println("Clock : " + defaultClock.millis());

}

十一,判断日期是早还是晚某个时间

// 判断日期是早还是晚某个时间
@Test
public void ff() {
LocalDate localDate = LocalDate.now();
if (localDate.isBefore(LocalDate.of(2022, 2, 2))) {
System.out.println("localDate isBefore ");
}
if (localDate.isAfter(LocalDate.of(2022, 2, 2))) {
System.out.println("localDate isAfter ");
}

}

十二,处理时区

// 处理时区
@Test
public void gg() {
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);
ZoneId zoneId = ZoneId.of(“America/New_York”);
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime1 = ZonedDateTime.of(localDateTime, zoneId);
System.out.println(zonedDateTime1);
}

十三,闰年

// 闰年
@Test
public void hh() {
LocalDate localDate = LocalDate.now();
if (localDate.isLeapYear()) {
System.out.println(“This year is Leap year”);
} else {
System.out.println(“This year is not a Leap year”);
}
}

十四,计算两个日期之间的天数和月数

// 计算两个日期之间的天数和月数
@Test
public void ii() {

LocalDate today = LocalDate.now();

LocalDate java8Release = LocalDate.of(2018, 12, 14);

Period periodToNextJavaRelease = Period.between(today, java8Release);

System.out.println("Years left between today and Java 8 release : "
        + periodToNextJavaRelease.getYears() );

System.out.println("Months left between today and Java 8 release : "
        + periodToNextJavaRelease.getMonths() );

System.out.println("Days left between today and Java 8 release : "
        + periodToNextJavaRelease.getDays() );

}

十五,格式化时间

// 格式化时间

java8之前

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(simpleDateFormat.format(new Date()));

java8

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(LocalDate.now().format(formatter));

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
System.out.println(LocalDateTime.now().format(formatter1));

十六,时间字符串互转

// 时间字符串互转
@Test
public void ll() {

/**
 * 时间转字符串
 */
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(LocalDate.now().format(formatter));

/**
 * 字符串转时间
 *      默认转换格式 2022-12-30
 */
LocalDate parse = LocalDate.parse("2022-12-30");
System.out.println(parse);

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate parse1 = LocalDate.parse("2022-12-30", formatter1);
System.out.println(parse1);

DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate parse2 = LocalDate.parse("20221230", formatter2);
System.out.println(parse2);
System.out.println(parse2.format(formatter2));

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值