JDK8时间相关类超详细总结(含多个实例)

作者:Alita11101_ 时间:2022-03-25 05:30:33 

一、带时区的时间

1.获取当前时间对象(带时区)

import java.time.ZonedDateTime;
public class demo1 {
   public static void main(String[] args) {

ZonedDateTime now = ZonedDateTime.now();
       System.out.println(now);

}
}

2023-01-13T19:24:18.389+08:00[Asia/Shanghai]

2.获取指定的时间对象(带时区)1/年月日时分秒纳秒方式指定

import java.time.Instant;
public class demo1 {
   public static void main(String[] args) {

ZonedDateTime time1 = ZonedDateTime.of(2023, 1, 1, 8, 30, 0, 0, ZoneId.of("Asia/Shanghai"));
       System.out.println(time1);

}
}

2023-01-01T08:30+08:00[Asia/Shanghai]

3.通过Instant + 时区的方式指定获取时间对象

import java.time.Instant;
public class demo1 {
   public static void main(String[] args) {
       Instant instant = Instant.ofEpochMilli(0L);
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
ZonedDateTime time2 = ZonedDateTime.ofInstant(instant, zoneId);
System.out.println(time2);

}
}

1970-01-01T08:00+08:00[Asia/Shanghai]

4.修改时间

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Demo8 {
   public static void main(String[] args) {
       Instant instant = Instant.ofEpochMilli(0L);
       ZoneId zoneId = ZoneId.of("Asia/Shanghai");
       ZonedDateTime time2 = ZonedDateTime.ofInstant(instant, zoneId);
       ZonedDateTime time3 = time2.withYear(2000);
       System.out.println(time3);

ZonedDateTime time4 = time3.minusYears(1);
       System.out.println(time4);

ZonedDateTime time5 = time4.plusYears(1);
       System.out.println(time5);
   }
}

2000-01-01T08:00+08:00[Asia/Shanghai]
1999-01-01T08:00+08:00[Asia/Shanghai]
2000-01-01T08:00+08:00[Asia/Shanghai]

二、DateTimeFormatter

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
//获取时间对象
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));

// 解析/格式化器
DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm;ss EE a");
// 格式化
System.out.println(dtf1.format(time));

2023-01-14 23:55;55 星期六 下午

三、LocalDate

1. 获取当前时间的日历对象(包含年月日)

//1.获取当前时间的日历对象(包含 年月日)
LocalDate nowDate = LocalDate.now();
//System.out.println("今天的日期:" + nowDate);

2.获取指定的时间的日历对象

LocalDate ldDate = LocalDate.of(2023, 1, 1);
System.out.println("指定日期:" + ldDate);

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

//3.get系列方法获取日历中的每一个属性值//获取年
int year = ldDate.getYear();
System.out.println("year: " + year);
//获取月//方式一:
Month m = ldDate.getMonth();
System.out.println(m);
System.out.println(m.getValue());

//方式二:
int month = ldDate.getMonthValue();
System.out.println("month: " + month);

//获取日
int day = ldDate.getDayOfMonth();
System.out.println("day:" + day);

//获取一年的第几天
int dayofYear = ldDate.getDayOfYear();
System.out.println("dayOfYear:" + dayofYear);

//获取星期
DayOfWeek dayOfWeek = ldDate.getDayOfWeek();
System.out.println(dayOfWeek);
System.out.println(dayOfWeek.getValue());

//is开头的方法表示判断
System.out.println(ldDate.isBefore(ldDate));
System.out.println(ldDate.isAfter(ldDate));

//with开头的方法表示修改,只能修改年月日
LocalDate withLocalDate = ldDate.withYear(2000);
System.out.println(withLocalDate);

//minus开头的方法表示减少,只能减少年月日
LocalDate minusLocalDate = ldDate.minusYears(1);
System.out.println(minusLocalDate);

//plus开头的方法表示增加,只能增加年月日
LocalDate plusLocalDate = ldDate.plusDays(1);
System.out.println(plusLocalDate);

四、LocalTime

1.获取本地时间的日历对象(包含时分秒)

LocalTime nowTime = LocalTime.now();
System.out.println("今天的时间:" + nowTime);

int hour = nowTime.getHour();//时
System.out.println("hour: " + hour);

int minute = nowTime.getMinute();//分
System.out.println("minute: " + minute);

int second = nowTime.getSecond();//秒
System.out.println("second:" + second);

int nano = nowTime.getNano();//纳秒
System.out.println("nano:" + nano);
System.out.println("------------------------------------");
System.out.println(LocalTime.of(8, 20));//时分
System.out.println(LocalTime.of(8, 20, 30));//时分秒
System.out.println(LocalTime.of(8, 20, 30, 150));//时分秒纳秒
LocalTime mTime = LocalTime.of(8, 20, 30, 150);

2.is系列的方法

System.out.println(nowTime.isBefore(mTime));
System.out.println(nowTime.isAfter(mTime));

3.with系列的方法

这个系列的方法有局限性,只能修改时、分、秒

System.out.println(nowTime.withHour(10));

4.plus系列的方法

这个系列的方法有局限性,只能修改时、分、秒

System.out.println(nowTime.plusHours(10));

五、LocalDateTime

1.当前时间的的日历对象(包含年月日时分秒)

LocalDateTime nowDateTime = LocalDateTime.now();

System.out.println("今天是:" + nowDateTime);//今天是:
System.out.println(nowDateTime.getYear());//年
System.out.println(nowDateTime.getMonthValue());//月
System.out.println(nowDateTime.getDayOfMonth());//日
System.out.println(nowDateTime.getHour());//时
System.out.println(nowDateTime.getMinute());//分
System.out.println(nowDateTime.getSecond());//秒
System.out.println(nowDateTime.getNano());//纳秒

2.获取日:当年的第几天

System.out.println("dayofYear:" + nowDateTime.getDayOfYear());

3.获取星期

System.out.println(nowDateTime.getDayOfWeek());
System.out.println(nowDateTime.getDayOfWeek().getValue());

4.获取月份

System.out.println(nowDateTime.getMonth());
System.out.println(nowDateTime.getMonth().getValue());

LocalDate ld = nowDateTime.toLocalDate();
System.out.println(ld);

LocalTime lt = nowDateTime.toLocalTime();
System.out.println(lt.getHour());
System.out.println(lt.getMinute());
System.out.println(lt.getSecond());

六、结语

来源:https://blog.csdn.net/Alita233_/article/details/128679756

标签:jdk8,时间类,时间
0
投稿

猜你喜欢

  • jsp如何获取Session中的值

    2023-07-01 05:59:28
  • 使用@Validated 和 BindingResult 遇到的坑及解决

    2022-12-18 20:36:28
  • 详解java动态代理模式

    2023-03-29 13:39:29
  • servlet异步请求的实现

    2023-07-14 17:11:38
  • Java创建线程的五种写法总结

    2023-01-10 04:39:34
  • Java中的functor实现

    2023-11-26 08:30:50
  • Ireport的安装与使用教程

    2021-08-08 00:16:43
  • No ‘Access-Control-Allow-Origin‘ header is present跨域及解决

    2022-07-12 13:33:08
  • java实现人员信息管理系统

    2023-11-02 05:21:31
  • Mybatis对mapper的加载流程深入讲解

    2022-06-01 12:33:04
  • Java 8 新特性终极版指南详解

    2022-05-20 20:12:07
  • java按钮控件数组实现计算器界面示例分享

    2021-09-12 22:37:59
  • C#开发Windows UWP系列之布局面板RelativePanel

    2023-04-11 12:28:29
  • SpringBoot集成ElasticSearch的示例代码

    2023-05-02 05:50:28
  • 如何基于java实现Gauss消元法过程解析

    2023-12-15 21:51:08
  • Mybatis-Plus的使用详解

    2022-01-18 18:39:27
  • 基于C#实现FTP下载文件

    2021-07-09 20:10:01
  • Spring事务管理方法步骤解析

    2021-12-15 20:09:04
  • 打印Java程序的线程栈信息方式

    2021-11-02 19:00:28
  • 一起来学习Java IO的转化流

    2023-11-26 20:38:30
  • asp之家 软件编程 m.aspxhome.com