一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java8 新特性之日期API

詳解Java8 新特性之日期API

2020-12-05 16:43April.Chen Java教程

Java 8 在包java.time下包含了一組全新的時間日期API。下面通過示例給大家講解java8 新特征日期api的相關知識,感興趣的朋友一起看看吧

Java 8 在包java.time下包含了一組全新的時間日期API。下面的例子展示了這組新API里最重要的一些部分:

1.Clock 時鐘

Clock類提供了訪問當前日期和時間的方法,Clock是時區敏感的,可以用來取代 System.currentTimeMillis() 來獲取當前的微秒數。某一個特定的時間點也可以使用Instant類來表示,Instant類也可以用來創建老的java.util.Date對象。

?
1
2
3
4
Clock clock = Clock.systemDefaultZone();
long millis = clock.millis();
Instant instant = clock.instant();
Date legacyDate = Date.from(instant);  // legacy java.util.Date

2.Timezones 時區

在新API中時區使用ZoneId來表示。時區可以很方便的使用靜態方法of來獲取到。 時區定義了到UTS時間的時間差,在Instant時間點對象到本地日期對象之間轉換的時候是極其重要的。

?
1
2
3
4
5
6
7
8
System.out.println(ZoneId.getAvailableZoneIds());
// prints all available timezone ids
ZoneId zone1 = ZoneId.of("Europe/Berlin");
ZoneId zone2 = ZoneId.of("Brazil/East");
System.out.println(zone1.getRules());
System.out.println(zone2.getRules());
// ZoneRules[currentStandardOffset=+01:00]
// ZoneRules[currentStandardOffset=-03:00]

3.LocalTime 本地時間

LocalTime 定義了一個沒有時區信息的時間,例如 晚上10點,或者 17:30:15。下面的例子使用前面代碼創建的時區創建了兩個本地時間。之后比較時間并以小時和分鐘為單位計算兩個時間的時間差:

?
1
2
3
4
5
6
7
LocalTime now1 = LocalTime.now(zone1);
LocalTime now2 = LocalTime.now(zone2);
System.out.println(now1.isBefore(now2)); // false
long hoursBetween = ChronoUnit.HOURS.between(now1, now2);
long minutesBetween = ChronoUnit.MINUTES.between(now1, now2);
System.out.println(hoursBetween);    // -3
System.out.println(minutesBetween);   // -239

LocalTime 提供了多種工廠方法來簡化對象的創建,包括解析時間字符串。

?
1
2
3
4
5
6
7
8
LocalTime localTime= LocalTime.of(23, 59, 59);
System.out.println(localTime);    // 23:59:59
DateTimeFormatter germanFormatter =
  DateTimeFormatter
    .ofLocalizedTime(FormatStyle.SHORT)
    .withLocale(Locale.GERMAN);
LocalTime leetTime = localTime.format(germanFormatter);
System.out.println(leetTime);

4.LocalDate 本地日期

LocalDate 表示了一個確切的日期,比如 2014-03-11。該對象值是不可變的,用起來和LocalTime基本一致。下面的例子展示了如何給Date對象加減天/月/年。另外要注意的是這些對象是不可變的,操作返回的總是一個新實例。

?
1
2
3
4
5
6
LocalDate today = LocalDate.now();
LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);
LocalDate yesterday = tomorrow.minusDays(2);
LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);
DayOfWeek dayOfWeek = independenceDay.getDayOfWeek();
System.out.println(dayOfWeek);  // FRIDAY

從字符串解析一個LocalDate類型和解析LocalTime一樣簡單:

?
1
2
3
4
5
6
DateTimeFormatter germanFormatter =
  DateTimeFormatter
    .ofLocalizedDate(FormatStyle.MEDIUM)
    .withLocale(Locale.GERMAN);
LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter);
System.out.println(xmas);  // 2014-12-24

5.LocalDateTime 本地日期時間

LocalDateTime 同時表示了時間和日期,相當于前兩節內容合并到一個對象上了。LocalDateTime和LocalTime還有LocalDate一樣,都是不可變的。LocalDateTime提供了一些能訪問具體字段的方法。

?
1
2
3
4
5
6
7
LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59);
DayOfWeek dayOfWeek = sylvester.getDayOfWeek();
System.out.println(dayOfWeek);   // WEDNESDAY
Month month = sylvester.getMonth();
System.out.println(month);     // DECEMBER
long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY);
System.out.println(minuteOfDay);  // 1439

只要附加上時區信息,就可以將其轉換為一個時間點Instant對象,Instant時間點對象可以很容易的轉換為老式的java.util.Date。

?
1
2
3
4
5
Instant instant = sylvester
    .atZone(ZoneId.systemDefault())
    .toInstant();
Date legacyDate = Date.from(instant);
System.out.println(legacyDate);   // Wed Dec 31 23:59:59 CET 2014

格式化LocalDateTime和格式化時間和日期一樣的,除了使用預定義好的格式外,我們也可以自己定義格式:

?
1
2
3
4
5
6
DateTimeFormatter formatter =
  DateTimeFormatter
    .ofPattern("MMM dd, yyyy - HH:mm");
LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter);
String string = formatter.format(parsed);
System.out.println(string);   // Nov 03, 2014 - 07:13

和java.text.NumberFormat不一樣的是新版的DateTimeFormatter是不可變的,所以它是線程安全的。

以上所述是小編給大家介紹的Java8 新特性之日期API,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/april-chen/archive/2017/07/21/7218217.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久伊人精品波多野结衣 | les在宿舍吃她奶 | 亚洲电影成人 成人影院 | 2012年免费中文视频 | 欧美三级一区 | 9420高清视频在线观看网百度 | 日本男女视频 | 99色在线播放 | 久久精品一区 | 午夜伦午夜伦锂电影 | japan孕妇孕交 | 色悠久久久久综合网小说 | 91亚洲精品第一综合不卡播放 | 亚洲欧美久久婷婷爱综合一区天堂 | 狠狠色狠狠色综合日日小蛇 | 精品国产乱码久久久久久免费 | 日本卡一卡2卡3卡4精品卡无人区 | 果冻传媒mv在线观看入口免费 | 久热人人综合人人九九精品视频 | 99成人| 好大好爽好涨太深了小喜 | 精品国产剧情在线观看 | 欧美靠逼视频 | 亚洲国产精品一在线观看 | 四虎影院在线 | 特级夫妻大片免费在线播放 | ck7788免费视频 | 日本全黄三级在线观看 | 日本一区二区在线不卡 | 99人中文字幕亚洲区 | 美女张开腿让我了一夜 | 国产成人综合亚洲一区 | 日本免费播放 | beeg最新| 午夜免费啪视频观看视频 | 久久99国产综合精品AV蜜桃 | 国产成人小视频在线观看 | 狠狠色综合久久久久尤物 | 亚洲精品国精品久久99热 | 2019理论韩国理论中文 | 精品国产一二三区在线影院 |