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));
}
还没有评论,来说两句吧...