日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java8日期_Java8日期与时间

發布時間:2023/12/2 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8日期_Java8日期与时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們知道Java8一個比較大的改動就是引入了新的表示日期和時間的API,還是很有必要抽點時間了解一下基本的用法。

Java8之前的問題

在討論Java8的API之前,我們先看看原來API的問題。我們知道Java8之前只有java.util.Date和java.util.Calendar來表示和處理時間,它們的一些常見的問題如下:Date返回getMonth返回值為0~11,分別對應1~12月;

Calendar處理夏令時可能會引起問題;

這兩個類以及DateTimeFormat都不是線程安全的;

缺乏很多時間概念,如無時區日期,時間,間隔等等;

缺乏很多常用的日期操作,如計算兩個日期相差天數

JSR 310就是這樣應運而生,Java8的API也是依據此規范而來。This JSR will tackle the problem of a complete date and time model, including dates and times (with and without time zones), durations and time periods, intervals, formatting and parsing.

概覽包名功能java.time表示日期、時間、瞬時和期間的公共類

java.time.chrono非ISO日歷系統的API

java.time.format格式化類

java.time.temporal使用fields,units,adjusters訪問日期和時間

java.time.zone支持時區及其規則

常用類類功能Instant自1970年1月1日以來的一個時間點,以納秒為單位

Duration時長,以納秒為單位

Calendrical與底層API有關

DateTimeFields存儲域——值對的一個映射,不要求一致

DayOfWeek星期中的一天

LocalDate本地日期(年月日),沒有調整

LocalTime本地時間(時分秒),沒有調整

LocalDateTimeLocalDate和LocalTime的組合

MonthDay月日

OffsetTime帶時區的偏移時間,不包括日期或時區值

OffsetDateTime帶時區偏移的日期時間,不包括時區值

Period時間長度的描述,如兩個月零三天

ZonedDateTime帶時區和偏移的日期時間

Year年

YearMonth年月

ZoneOffset從UTC開始的時間偏移(時分秒)

ZoneId定義一個時區,如Canada/Eastern,及其轉換規則

如果對哪個類不是特別理解,打開IDE,簡單的操作一下即可。

簡單用例

查看當天日期1

2

3

4

5

6

7

8System.out.println(LocalDate.now());

System.out.println(LocalTime.now());

System.out.println(LocalDateTime.now());

output:

2017-01-03

16:24:11.520

2017-01-03T16:24:11.520

格式化日期和時間

下面是DateTimeFormatter類提供的格式化樣式,只需簡單了解一下即可,需要時可以查詢DateTimeFormatter文檔。

還有一個值得注意的是,模式中字母的重復次數對應這字符串預期長度。例如”MMM”對應”Jan”,””MMMM”對應”January”。你可能會好奇為什么”MMMM”為什么不是對應”Janu”,這點可以參考上面的文檔,如何對應在文檔中也有說明。符號含義顯示形式例子G公元文本AD;Anno Domini

y公元年年份2004;04

u公元年年份公元年和y相同,公元前3年,y返回3,u返回-2

D一年中的第幾天數字189

M/L月數字/文本7;07;Jul;July;J

d一月中的第幾天數字10

Q/q一年中的第幾季數字/文本3;03;Q3,3rd quarter

Y年年份1996;96

w一年中的某一周數字27

W一個月中的某一周數字4

e/c星期中的本地天數數字/文本2;02;Tue;Tuesday;T

E星期中的第幾天文本Tue;Tuesday;T

F某月中星期幾出現的序數(第幾個)數字3

aAM/PM表示文本PM

h12小時制的小時數(1~12)數字12

K12小時制的小時數(0~11)數字0

k24小時制的小時數(1~24)數字24

H24小時制的小時數(0~23)數字0

m小時內第幾分數字30

s一分內第幾秒數字55

S秒的小數(毫秒)小數978

A千分之一天數字1234

n納秒數字987654321

N十億分之一(納)天數字1234000000

V時區ID值文本America/Los_Angeles;Z;-08:30

z時區名文本Pacific Standard Time;PST

X時區偏移ZOffset-XZ;-08;-0830;-08:30;-083015;-08:30:15

x時區偏移Offset-x+0000;-08;-0830;-08:30;-083015;-08:30:15

Z時區的GMT偏移Offset-Z+0000;-0800;-08:00

O本地時區偏移Offset-OGMT+8;GMT+08:00;UTC-08:00

p填充下一個填充符11

2

3

4

5

6

7DateTimeFormatter df = DateTimeFormatter.ofPattern("yy/LL/dd");

System.out.println(df.format(LocalDate.now()));

System.out.println(LocalDate.parse("17/01/04",df));

output:

17/01/04

2017-01-04

日期和時間戳轉換1

2

3

4

5

6

7

8

9

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

System.out.println(ZonedDateTime.now().toInstant().getEpochSecond());

Instant instant = Instant.ofEpochSecond(1483492172L);

ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));

System.out.println(zonedDateTime);

output:

2017-01-04T09:13:39.624+08:00[Asia/Shanghai]

1483492419

2017-01-04T09:09:32+08:00[Asia/Shanghai]

字符串解析為日期1

2

3

4

5

6

7

8

9

10

11

12

13

14

15LocalDate localDate = LocalDate.parse("2016-01-04");

System.out.println(localDate);

DateTimeFormatter pattern = DateTimeFormatter.ofPattern("dd LLL yyyy");

System.out.println(pattern.format(LocalDate.now()));

//注意LocalDate是和本地相關的,所以要用一月,上面就是看看本地輸出格式

DateTimeFormatter df = DateTimeFormatter.ofPattern("dd MMM yyyy");

System.out.println(LocalDate.parse("04 一月 2011", df));

output:

2016-01-04

04 一月 2017

2011-01-04

日期間的計算1

2

3

4

5

6

7

8

9

10

11LocalDate last = LocalDate.of(2016, 1, 1);

LocalDate now = LocalDate.now();

Period diff = Period.between(last, now);

System.out.println(diff);

//今天是2017/1/4

Period p = Period.ofDays(1);

System.out.println(now.plus(p));

output:

P1Y3D

2017-01-05

參考鏈接

總結

以上是生活随笔為你收集整理的java8日期_Java8日期与时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。