java8的日期、時間類


一Date類(歷史悠久) 月份與小時從0開始,天數從1開始,年從1900開始

 

二.Calendar類

   ①抽象類

   ②不能直接實例化

 

三.使用

   

 1 import java.util.Date;
 2 
 3 public class Demo_Date 
 4 {
 5   public static void main(String[] args) 
 6   {
 7     //獲取當前時間
 8       Date d=new Date();
 9       //獲取當前時間一百秒后的時間
10       Date d2=new Date(System.currentTimeMillis()+100);
11       //比較時間d是否在d2之前
12       System.out.println(d.before(d2));
13       //比較時間先后順序,若在此之前則返回-1,若相等則返回0,否則返回1
14       System.out.println(d.compareTo(d2));
15    }
16 }

 

 

 四.set方法的延遲性

 

 1 import java.text.SimpleDateFormat;
 2 import java.util.Calendar;
 3 import java.util.Date;
 4 /**
 5  * set()方法的延遲性
 6  *   當使用set修改月份的時候,字段確實改變
 7  *   但是只有使用get()、gettime()、getTimeMillis()、add()、roll()才會重新計算日歷時間
 8  */
 9 public class AddTest{
10    public static void main(String[] args) {
11        //實例化一個calendar類
12        Calendar cal=Calendar.getInstance(); 
13        //設置時間
14        cal.set(2018, 11, 8, 14, 30,30);//延遲計算
15        //修改時間
16        cal.add(Calendar.MONTH, 6);
17        //計算時間並且接收
18        Date day=cal.getTime();
19        //創建轉換器
20        SimpleDateFormat sim=new SimpleDateFormat("y年M月d日  h:m:s");
21        //轉換為字符串格式
22        String result=sim.format(day);       
23        //獲取時間
24        System.out.println(result);       
25 }
26 }

 

五.Calendar的容錯性

       容錯機制開啟時

 1 import java.text.SimpleDateFormat;
 2 import java.util.Calendar;
 3 import java.util.Date;
 4 
 5 /*
 6  * Calendar的容錯性:setLenient()方法
 7  *   1.當容錯性沒有關閉時,將月份設置為13時(月份是從0開始,代表一月)顯示為二月
 8  *   並且會將YEAR字段加一(本實例當前時間是2018年)
 9  *   2.當容錯性關閉時,導致運行時異常
10  */
11 public class LenientTest {
12     public static void main(String[] args) {
13         //實例化calendar對象
14         Calendar ca=Calendar.getInstance();
15         
16             //ca.setLenient(false);//關閉容錯性
17          
18         //隨便設置一個時間
19         ca.set(Calendar.MONTH, 13);
20         //計算時間
21         Date day=ca.getTime();
22          //創建轉換器
23         SimpleDateFormat sim=new SimpleDateFormat("y年M月d日  h:m:s");
24         //轉換為字符串格式
25         String result=sim.format(day);
26         System.out.println(result);               
27     }
28 }

 

 

 容錯機制關閉時

 1 /*
 2  * Calendar的容錯性:setLenient()方法
 3  *   1.當容錯性沒有關閉時,將月份設置為13時(月份是從0開始,代表一月)顯示為二月
 4  *   並且會將YEAR字段加一(本實例當前時間是2018年)
 5  *   2.當容錯性關閉時,導致運行時異常
 6  */
 7 public class LenientTest {
 8     public static void main(String[] args) {
 9         //實例化calendar對象
10         Calendar ca=Calendar.getInstance();
11         
12             ca.setLenient(false);//關閉容錯性
13          
14         //隨便設置一個時間
15         ca.set(Calendar.MONTH, 13);
16         //計算時間
17         Date day=ca.getTime();
18          //創建轉換器
19         SimpleDateFormat sim=new SimpleDateFormat("y年M月d日  h:m:s");
20         //轉換為字符串格式
21         String result=sim.format(day);
22         System.out.println(result);               
23     }
24 }

六.java8新增的日期、時間包的使用(請自行查閱API文檔)

 1 import java.time.Clock;  2 import java.time.Duration;  3 import java.time.Instant;  4 import java.time.LocalDate;  5 import java.time.LocalDateTime;  6 import java.time.LocalTime;  7 import java.time.Month;  8 import java.time.MonthDay;  9 import java.time.Year; 10 import java.time.YearMonth; 11 /**
12  * systemUTC()方法返回當前時間使用UTC時區轉換為日期和時間 13  */
14 public class TimeClockTest { 15     public static void main(String[] args) { 16         //----下面是關於clock的用法---- 17         //獲取當前clock
18         Clock clock=Clock.systemUTC(); 19         //通過Clock獲取當前時刻
20         System.out.println("當前時刻為: "+clock.instant()); 21         //獲取clock對應的毫秒數,與system.currentTimeMillis()輸出相同
22  System.out.println(clock.millis()); 23  System.out.println(System.currentTimeMillis()); 24         //----下面是關於Duration的用法------
25         Duration dur=Duration.ofSeconds(6000); 26         System.out.println("6000秒相當於: "+dur.toMinutes()+"分"); 27         System.out.println("6000秒相當於: "+dur.toMinutes()+"小時"); 28         System.out.println("6000秒相當於: "+dur.toDays()+"天"); 29         //在clock基礎上增加6000秒,返回新的clock
30         Clock clock2=Clock.offset(clock, dur); 31         //可以看到clock2與clock相差1小時40分
32         System.out.println("當前時刻加6000秒為: "+clock2.instant()); 33         //下面是instant的用法 34         //獲取當前時間
35         Instant instant=Instant.now(); 36  System.out.println(instant); 37         //instant添加6000秒,返回新的Instant
38         Instant instant2=instant.plusSeconds(6000); 39  System.out.println(instant2); 40         //根據字符串解析Instant對象
41         Instant instant3=instant.parse("2018-12-08T11:57:43.054Z"); 42  System.out.println(instant3); 43         //在instant3的基礎上添加5小時4分鍾
44         Instant instant4=instant3.plus(Duration.ofHours(5).plusMinutes(4)); 45  System.out.println(instant4); 46         //獲取instant4五天前的時刻
47         Instant instant5=instant4.minus(Duration.ofDays(5)); 48  System.out.println(instant5); 49         //-----下面是關於LocalDate的用法-----
50         LocalDate localdate=LocalDate.now(); 51  System.out.println(localdate); 52         //獲得2018年的第345天
53         localdate=LocalDate.ofYearDay(2018, 345); 54  System.out.println(localdate); 55         //設置為2018年12月31日
56         localdate=LocalDate.of(2018, Month.DECEMBER, 31); 57  System.out.println(localdate); 58         //---下面是關於LocalTime---的用法 59         //獲取當前時間
60         LocalTime localtime=LocalTime.now(); 61  System.out.println(localtime); 62         //設置為22點33分
63         localtime=LocalTime.of(22, 33); 64  System.out.println(localtime); 65         //返回一天中的第5503秒
66         localtime=LocalTime.ofSecondOfDay(5503); 67  System.out.println(localtime); 68         //---下面是關於localDateTime的用法 69         //獲取當前時間
70         LocalDateTime localdatetime=LocalDateTime.now(); 71  System.out.println(localdatetime); 72         //當前日期,時間加上25小時3分鍾
73         LocalDateTime future=localdatetime.plusHours(25).plusMinutes(3); 74  System.out.println(future); 75         //---下面是關於year,yearMonth,MonthDay的用法示例---
76         Year year=Year.now();//獲取當前的年份
77         System.out.println("當前年份: "+year);//輸出當前年份
78          year=year.plusYears(5); //當前年份再加5
79          System.out.println("當前年份再過5年: "+year); 80          //根據指定月份獲取yearsMonth
81          YearMonth ym=year.atMonth(10); 82          System.out.println("year年10月: "+ym); 83          //當前年月再加5年.減三個月
84          ym=ym.plusYears(5).minusMonths(3); 85          System.out.println("year年10月再加5年,減3個月: "+ym); 86          MonthDay md=MonthDay.now(); 87          System.out.println("當前月日: "+md); 88          //設置為5月23日
89          MonthDay md2=md.with(Month.MAY).withDayOfMonth(23); 90          System.out.println("5月23日為: "+md2); 91  } 92 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM