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

歡迎訪問 生活随笔!

生活随笔

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

java

java8日期_Java8日期与时间

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

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

Java8之前的問題

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

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

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

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

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

JSR 310就是這樣應(yīng)運而生,Java8的API也是依據(jù)此規(guī)范而來。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日歷系統(tǒng)的API

java.time.format格式化類

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

java.time.zone支持時區(qū)及其規(guī)則

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

Duration時長,以納秒為單位

Calendrical與底層API有關(guān)

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

DayOfWeek星期中的一天

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

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

LocalDateTimeLocalDate和LocalTime的組合

MonthDay月日

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

OffsetDateTime帶時區(qū)偏移的日期時間,不包括時區(qū)值

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

ZonedDateTime帶時區(qū)和偏移的日期時間

Year年

YearMonth年月

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

ZoneId定義一個時區(qū),如Canada/Eastern,及其轉(zhuǎn)換規(guī)則

如果對哪個類不是特別理解,打開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文檔。

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

y公元年年份2004;04

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

D一年中的第幾天數(shù)字189

M/L月數(shù)字/文本7;07;Jul;July;J

d一月中的第幾天數(shù)字10

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

Y年年份1996;96

w一年中的某一周數(shù)字27

W一個月中的某一周數(shù)字4

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

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

F某月中星期幾出現(xiàn)的序數(shù)(第幾個)數(shù)字3

aAM/PM表示文本PM

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

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

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

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

m小時內(nèi)第幾分數(shù)字30

s一分內(nèi)第幾秒數(shù)字55

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

A千分之一天數(shù)字1234

n納秒數(shù)字987654321

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

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

z時區(qū)名文本Pacific Standard Time;PST

X時區(qū)偏移ZOffset-XZ;-08;-0830;-08:30;-083015;-08:30:15

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

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

O本地時區(qū)偏移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

日期和時間戳轉(zhuǎn)換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是和本地相關(guān)的,所以要用一月,上面就是看看本地輸出格式

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

參考鏈接

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。