JDK8時間相關類超詳細總結(含多個實例)

一、帶時區的時間

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());

六、結語

到此這篇關於JDK8時間相關類超詳細總結的文章就介紹到這瞭,更多相關JDK8時間相關類內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: