1. 程式人生 > >JDK8中新的日期時間類的使用方式

JDK8中新的日期時間類的使用方式

研究了好久jdk8,剛剛看完jdk8新的日期時間類,當然,相較以前還是有很多改進之處的,不多說,直接上程式碼,都是很簡單的測試,相信都能看懂的:

  1 package org.test.datetimetest;
  2 
  3 import java.time.Duration;
  4 import java.time.Instant;
  5 import java.time.LocalDate;
  6 import java.time.LocalDateTime;
  7 import java.time.LocalTime;
  8 import java.time.Month;
9 import java.time.Period; 10 import java.time.ZoneId; 11 import java.time.ZoneOffset; 12 import java.time.ZonedDateTime; 13 import java.time.format.DateTimeFormatter; 14 import java.time.temporal.TemporalAdjusters; 15 import java.util.Calendar; 16 import java.util.Date; 17 import java.util.GregorianCalendar;
18 import java.util.TimeZone; 19 20 public class DateTimeTest { 21 22 public static void main(String[] args) { 23 24 dateTest(); 25 timeTest(); 26 localDateTimeTest(); 27 instantTest(); 28 dateTimeUtils(); 29 dateParseFormatTest();
30 dateAPILegacySupport(); 31 } 32 33 private static void dateTest() { 34 35 LocalDate today = LocalDate.now(); 36 System.out.println("當前日期:" + today); 37 38 LocalDate firstDay_2014 = LocalDate.of(2014, Month.JANUARY, 1); 39 System.out.println("2014年第一天:" + firstDay_2014); 40 41 LocalDate todayAsia = LocalDate.now(ZoneId.of("Asia/Kolkata")); 42 System.out.println("亞洲時區的當前日期:" + todayAsia); 43 44 LocalDate ofEpochDay = LocalDate.ofEpochDay(365); 45 System.out.println("基準日期點" + ofEpochDay); 46 47 LocalDate ofYearDay = LocalDate.ofYearDay(2014, 100); 48 System.out.println("2014年第100天的日期" + ofYearDay); 49 } 50 51 private static void timeTest() { 52 53 LocalTime now = LocalTime.now(); 54 System.out.println(now); 55 56 LocalTime setTime = LocalTime.of(23, 25, 45, 20); 57 System.out.println(setTime); 58 59 LocalTime timeOfAsia = LocalTime.now(ZoneId.of("Asia/Kolkata")); 60 System.out.println(timeOfAsia); 61 62 LocalTime ofSecondOfDay = LocalTime.ofSecondOfDay(10000); 63 System.out.println(ofSecondOfDay); 64 } 65 66 private static void localDateTimeTest() { 67 68 //Current Date 69 LocalDateTime today = LocalDateTime.now(); 70 System.out.println("當前日期時間 DateTime="+today); 71 //Current Date using LocalDate and LocalTime 72 today = LocalDateTime.of(LocalDate.now(), LocalTime.now()); 73 System.out.println("當前日期時間="+today); 74 //Creating LocalDateTime by providing input arguments 75 LocalDateTime specificDate = LocalDateTime.of(2014, Month.JANUARY, 1, 10, 10, 30); 76 System.out.println("Specific Date="+specificDate); 77 //Try creating date by providing invalid inputs 78 //LocalDateTime feb29_2014 = LocalDateTime.of(2014, Month.FEBRUARY, 28, 25,1,1); 79 //Exception in thread "main" java.time.DateTimeException: 80 //Invalid value for HourOfDay (valid values 0 - 23): 25 81 //Current date in "Asia/Kolkata", you can get it from ZoneId javadoc 82 LocalDateTime todayKolkata = LocalDateTime.now(ZoneId.of("Asia/Kolkata")); 83 System.out.println("Current Date in IST="+todayKolkata); 84 //java.time.zone.ZoneRulesException: Unknown time-zone ID: IST 85 //LocalDateTime todayIST = LocalDateTime.now(ZoneId.of("IST")); 86 //Getting date from the base date i.e 01/01/1970 87 LocalDateTime dateFromBase = LocalDateTime.ofEpochSecond(10000, 0, ZoneOffset.UTC); 88 System.out.println("10000th second time from 01/01/1970= "+dateFromBase); 89 } 90 91 private static void instantTest() { 92 93 Instant instant = Instant.now(); 94 System.out.println(instant); 95 96 Instant ofEpochMilli = Instant.ofEpochMilli(instant.toEpochMilli()); 97 System.out.println(ofEpochMilli); 98 99 Duration duration = Duration.ofDays(30); 100 System.out.println(duration); 101 102 } 103 104 private static void dateTimeUtils() { 105 106 LocalDate today = LocalDate.now(); 107 //Get the Year, check if it's leap year 108 System.out.println("Year "+today.getYear()+" is Leap Year? "+today.isLeapYear()); 109 //Compare two LocalDate for before and after 110 System.out.println("Today is before 01/01/2015? "+today.isBefore(LocalDate.of(2015,1,1))); 111 //Create LocalDateTime from LocalDate 112 System.out.println("Current Time="+today.atTime(LocalTime.now())); 113 //plus and minus operations 114 System.out.println("10 days after today will be "+today.plusDays(10)); 115 System.out.println("3 weeks after today will be "+today.plusWeeks(3)); 116 System.out.println("20 months after today will be "+today.plusMonths(20)); 117 System.out.println("10 days before today will be "+today.minusDays(10)); 118 System.out.println("3 weeks before today will be "+today.minusWeeks(3)); 119 System.out.println("20 months before today will be "+today.minusMonths(20)); 120 //Temporal adjusters for adjusting the dates 121 System.out.println("First date of this month= "+today.with(TemporalAdjusters.firstDayOfMonth())); 122 LocalDate lastDayOfYear = today.with(TemporalAdjusters.lastDayOfYear()); 123 System.out.println("Last date of this year= "+lastDayOfYear); 124 Period period = today.until(lastDayOfYear); 125 System.out.println("Period Format= "+period); 126 System.out.println("Months remaining in the year= "+period.getMonths()); 127 } 128 129 private static void dateParseFormatTest() { 130 131 LocalDate today = LocalDate.now(); 132 System.out.println("today:" + today); 133 System.out.println(today.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"))); 134 System.out.println(today.format(DateTimeFormatter.BASIC_ISO_DATE)); 135 136 LocalDateTime now = LocalDateTime.now(); 137 System.out.println("now:" + now); 138 System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:SS"))); 139 System.out.println(now.format(DateTimeFormatter.BASIC_ISO_DATE)); 140 141 Instant timestamp = Instant.now(); 142 //default format 143 System.out.println("Default format of Instant="+timestamp); 144 //Parse examples,這部分有問題 145 //LocalDateTime dt = LocalDateTime.parse("27::Apr::2014 21::39::48", 146 //DateTimeFormatter.ofPattern("d::MMM::uuuu HH::mm::ss")); 147 //System.out.println("Default format after parsing = "+dt); 148 } 149 150 private static void dateAPILegacySupport() { 151 152 //Date to Instant 153 Instant timestamp = new Date().toInstant(); 154 //Now we can convert Instant to LocalDateTime or other similar classes 155 LocalDateTime date = LocalDateTime.ofInstant(timestamp, 156 ZoneId.of(ZoneId.SHORT_IDS.get("PST"))); 157 System.out.println("Date = "+date); 158 //Calendar to Instant 159 Instant time = Calendar.getInstance().toInstant(); 160 System.out.println(time); 161 //TimeZone to ZoneId 162 ZoneId defaultZone = TimeZone.getDefault().toZoneId(); 163 System.out.println(defaultZone); 164 //ZonedDateTime from specific Calendar 165 ZonedDateTime gregorianCalendarDateTime = new GregorianCalendar().toZonedDateTime(); 166 System.out.println(gregorianCalendarDateTime); 167 //Date API to Legacy classes 168 Date dt = Date.from(Instant.now()); 169 System.out.println(dt); 170 TimeZone tz = TimeZone.getTimeZone(defaultZone); 171 System.out.println(tz); 172 GregorianCalendar gc = GregorianCalendar.from(gregorianCalendarDateTime); 173 System.out.println(gc); 174 } 175 }

下一次,釋出jdk8中stream的使用方式,還有lambda表示式的使用方式,特別是stream,感覺用起來好方便啊!!!

相關推薦

JDK8日期時間的使用方式

研究了好久jdk8,剛剛看完jdk8新的日期時間類,當然,相較以前還是有很多改進之處的,不多說,直接上程式碼,都是很簡單的測試,相信都能看懂的: 1 package org.test.datetimetest; 2 3 import java.time.Duration; 4 i

mysql幾個日期時間型之間的區別和使用

info eight exist into -- 刷新 set style alt MySQL中有如下幾個時間類型:date、time、datetime、timestamp、year MySQL數據類型 含義 date

android獲取日期時間的幾種方式

日期時間的獲取方式如下所示: 1、使用SimpleDateFormat和Date類獲取日期時間 private String _GetYear(){ SimpleDateFormat sdf

Java 8 特性(三)日期時間

老日期類 一說到在Java中處理日期和時間,我們首先想到的肯定是java.util.Date類。確實,由於很多教材和文獻都比較老,所以大多數人學習Java的時候使用的都是這個類。而且這個類確實在整個Java生態中擔任過重要的作用。 但是隨著時間推移,這個類已

【Java8特性】關於Java8日期時間API,你需要掌握這些!!

## 寫在前面 > Java8之前的日期和時間API,存在一些問題,比如:執行緒安全的問題,跨年的問題等等。這些問題都在Hava8中的日期和時間API中得到了解決,而且Java8中的日期和時間API更加強大。立志成為架構師的你,必須掌握Java8中的日期和時間API。 ## 本地時間和時間戳 **

mysql日期時間型總結

days 5-0 ted 當前 可能 數據 oca uart mode MySQL 日期類型:日期格式、所占存儲空間、日期範圍 比較。 日期類型 存儲空間 日期格式 日期範圍 ------------ -----

日期時間型轉換

日期時間類型轉換一、time轉換為datetime1)datetime.datetime.fromtimestamp( tm )2)datetime.datetime.utcfromtimestamp( tm ) 二、datetime->time1)dt01.timestamp()2)dt01.time

日期時間日期時間,單例模式,裝箱與拆箱,數字隨機數,BigDecimal總結

方便 下標 時分秒 etime 相等 創建 rep style with 1.日期類,時間類,日期時間類 初步日期使用方法及格式轉換方法(舊方法): 格式://Mon Jul 30 11:26:05 CST 2018 年月日時分秒 CST代表北

Solr日期/時間表示

摘要: Solr的日期欄位(TrieDateField 和DateRangeField)可以對一個時間點以毫秒精度表示。 格式 Solr中的日期有很嚴格的格式限制: YYYY-MM-DDThh:mm:ssZ YYYY 表示年 MM 表示月份 DD 表示天 hh 表示小時,24小時制

向資料庫插入日期時間datetime型別資料,資料庫只有日期沒有時分秒

  java.util.Date是不能直接插入資料庫中的,雖然它包含了日期和時分秒。   java.sql.Date可以直接插入資料庫,但是它只有日期而沒有時間;   java.sql.Time可以直接插入資料庫,但是它只有時間,沒有日期 Java

Java基礎——常用日期時間

  如果有機會,請嘗試Java8中全新的時間日期API!(參見Java8新特性隨筆)   如果還是使用Java7及之前的版本,那麼你可以嘗試一些工具類(參考使用工具類相關的Hutool-DateUtil)   如果又不能升級JDK,又無法引入第三方依賴庫,那麼你可以需要了解以下的時間日期相關的A

【小工具】——從文字內容提取日期時間

需求 需要從文字檔案中提取中時間及日期 程式碼 “`java /** * 從文字內容中提取日期時間 * @param text 包含日期時間的文字(格式:yy

Java8特性(五)日期時間的API

1、新時間日期API java.time – 包含值物件的基礎包 java.time.chrono – 提供對不同的日曆系統的訪問 java.time.format – 格式化和解析時間和日期 java.time.temporal – 包括底層框架和擴

SpringMVC日期時間格式化方式

### 引入 平時,在寫前端頁面時,很有可能會涉及到表單中有日期的情況,一般情況下不同的業務使用的日期格式都有所不同。下面看下一個簡單的例子說明SpringMVC對日期的處理。 jsp頁面如下(簡單的表單,其中有一個輸入框中輸入的是日期時間): &

java自帶時間用法例項 Date,Timestamp,DateFormat

我們將以Java自帶的時間日期類和其中的處理函式進行分析。 一、與時間日期有關的類。   java.util.Date。實現類,其物件具有時間、日期元件。   java.util.Calendar。抽象類,其物件具有時間、日期元件。   java.sql.Date。實現類,

java六個時間的使用和區別

java.util.Date java.sql.Date   java.sql.Time   java.sql.Timestamp java.text.SimpleDateFormat java.util.Calendar java.u

第十二週專案三日期時間

/* * Copyright (c) 2014, 煙臺大學計算機學院 * All rights reserved. * 作 者:紀麗娜 * 完成日期:2014年05月19日 * 版 本 號:v1.0 * 問題描述: *定義一個日期類Date, *資料成員包括年、

SQL 日期時間處理方法

//查詢資料庫中2015年以後的日期,sql 日期可以寫成字串形式,SQL會隱式轉換 select birthday   from MyClass  where Birthday >'2015-01-01'  ---必須是4位年,2位月,2位日 //也可以使用 CAS

十二週——日期時間

/* *Copyright (c) 2013, 煙臺大學計算機學院 * All rights reserved. * 作 者:申玉迪 * 完成日期:2014 年 5 月 19 日 * 版 本 號:v1.0 * 問題描述:日期時間類 */ #include <io

MySQL儲存過程常用的函式(字串型別操作,數學日期時間

ADDTIME (date2 ,time_interval ) //將time_interval加到date2CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區CURRENT_DATE (  ) //當前日期CURRENT_TIME (  ) //當前時間CURRENT_