1. 程式人生 > >JAVA的Date類與Calendar類

JAVA的Date類與Calendar類

Date

JDK1.0中,Date類是唯一的一個代表時間的類,但是由於Date類不便於實現國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。這裡簡單介紹一下Date類的使用。

1、使用Date類代表當前系統時間

                   Date d = new Date();

                   System.out.println(d);

使用Date類的預設構造方法創建出的物件就代表當前時間,由於Date類覆蓋了toString方法,所以可以直接輸出Date型別的物件,顯示的結果如下:

                            Sun Mar 08 16:35:58 CST 2009

在該格式中,Sun代表Sunday(週日)Mar代表March(三月)08代表8號,CST代表China Standard Time(中國標準時間,也就是北京時間(東八區))

         2、使用Date類代表指定的時間

                            Date d1 = new Date(2009-1900,3-1,9);

                            System.out.println(d1);

使用帶引數的構造方法,可以構造指定日期的Date類物件,Date類中年份的引數應該是實際需要代表的年份減去1900,實際需要代表的月份減去

1以後的值。例如上面的示例程式碼代表就是200939號。

實際代表具體的年月日時分秒的日期物件,和這個類似。

         3、獲得Date物件中的資訊

                            Date d2 = new Date();

                   //年份

                   int year = d2.getYear() + 1900;

                   //月份

                   int month = d2.getMonth() + 1;

                   //日期

                   int date = d2.getDate();

                   //小時

                   int hour = d2.getHours();

                   //分鐘

                   int minute = d2.getMinutes();

                   //

                   int second = d2.getSeconds();

                   //星期幾

                   int day = d2.getDay();

                   System.out.println("年份:" + year);

                   System.out.println("月份:" + month);

                   System.out.println("日期:" + date);

                   System.out.println("小時:" + hour);

                   System.out.println("分鐘:" + minute);

                   System.out.println("秒:" + second);

                   System.out.println("星期:" + day);

使用Date類中對應的get方法,可以獲得Date類物件中相關的資訊,需要注意的是使用getYear獲得是Date物件中年份減去1900以後的值,所以需要顯示對應的年份則需要在返回值的基礎上加上1900,月份類似。在Date類中還提供了getDay方法,用於獲得Date物件代表的時間是星期幾,Date類規定週日是0,週一是1,週二是2,後續的依次類推。

4Date物件和相對時間之間的互轉

                  Date d3 = new Date(2009-1900,3-1,10);

                   long time = 1290876532190L;

                   //Date類的物件轉換為相對時間

                   long t = d3.getTime();

                   System.out.println(t);

                   //將相對時間轉換為Date類的物件

                   Date d4 = new Date(time);

                   System.out.println(d4);

使用Date物件中的getTime方法,可以將Date類的物件轉換為相對時間,使用Date類的構造方法,可以將相對時間轉換為Date類的物件。經過轉換以後,既方便了時間的計算,也使時間顯示比較直觀了。

 Calendar

JDK1.1版本開始,在處理日期和時間時,系統推薦使用Calendar類進行實現。在設計上,Calendar類的功能要比Date類強大很多,而且在實現方式上也比Date類要複雜一些,下面就介紹一下Calendar類的使用。

Calendar類是一個抽象類,在實際使用時實現特定的子類的物件,建立物件的過程對程式設計師來說是透明的,只需要使用getInstance方法建立即可。

1、使用Calendar類代表當前時間

                   Calendar c = Calendar.getInstance();

由於Calendar類是抽象類,且Calendar類的構造方法是protected的,所以無法使用Calendar類的構造方法來建立物件,API中提供了getInstance方法用來建立物件。

使用該方法獲得的Calendar物件就代表當前的系統時間,由於CalendartoString實現的沒有Date類那麼直觀,所以直接輸出Calendar類的物件意義不大。

2、使用Calendar類代表指定的時間

                   Calendar c1 = Calendar.getInstance();

                   c1.set(2009, 3 - 1, 9);

使用Calendar類代表特定的時間,需要首先建立一個Calendar的物件,然後再設定該物件中的年月日引數來完成。

set方法的宣告為:

         public final void set(int year,int month,int date)

以上示例程式碼設定的時間為200939日,其引數的結構和Date類不一樣。Calendar類中年份的數值直接書寫,月份的值為實際的月份值減1,日期的值就是實際的日期值。

如果只設定某個欄位,例如日期的值,則可以使用如下set方法:

         public void set(int field,int value)

在該方法中,引數field代表要設定的欄位的型別,常見型別如下:

         Calendar.YEAR——年份

         Calendar.MONTH——月份

         Calendar.DATE——日期

         Calendar.DAY_OF_MONTH——日期,和上面的欄位完全相同

         Calendar.HOUR——12小時制的小時數

         Calendar.HOUR_OF_DAY——24小時制的小時數

         Calendar.MINUTE——分鐘

         Calendar.SECOND——秒

         Calendar.DAY_OF_WEEK——星期幾

後續的引數value代表,設定成的值。例如:

         c1.set(Calendar.DATE,10);

該程式碼的作用是將c1物件代表的時間中日期設定為10號,其它所有的數值會被重新計算,例如星期幾以及對應的相對時間數值等。

3、獲得Calendar類中的資訊

                   Calendar c2 = Calendar.getInstance();

                   //年份

                   int year = c2.get(Calendar.YEAR);

                   //月份

                   int month = c2.get(Calendar.MONTH) + 1;

                   //日期

                   int date = c2.get(Calendar.DATE);

                   //小時

                   int hour = c2.get(Calendar.HOUR_OF_DAY);

                   //分鐘

                   int minute = c2.get(Calendar.MINUTE);

                   //

                   int second = c2.get(Calendar.SECOND);

                   //星期幾

                   int day = c2.get(Calendar.DAY_OF_WEEK);

                   System.out.println("年份:" + year);

                   System.out.println("月份:" + month);

                   System.out.println("日期:" + date);

                   System.out.println("小時:" + hour);

                   System.out.println("分鐘:" + minute);

                   System.out.println("秒:" + second);

                   System.out.println("星期:" + day);

使用Calendar類中的get方法可以獲得Calendar物件中對應的資訊,get方法的宣告如下:

         public int get(int field)

其中引數field代表需要獲得的欄位的值,欄位說明和上面的set方法保持一致。需要說明的是,獲得的月份為實際的月份值減1,獲得的星期的值和Date類不一樣。在Calendar類中,週日是1,週一是2,週二是3,依次類推。

4、其它方法說明

其實Calendar類中還提供了很多其它有用的方法,下面簡單的介紹幾個常見方法的使用。

aadd方法

                   public abstract void add(int field,int amount)

該方法的作用是在Calendar物件中的某個欄位上增加或減少一定的數值,增加是amount的值為正,減少時amount的值為負。

例如在計算一下當前時間100天以後的日期,程式碼如下:

                   Calendar c3 = Calendar.getInstance();

                   c3.add(Calendar.DATE, 100);

                   int year1 = c3.get(Calendar.YEAR);

                   //月份

                   int month1 = c3.get(Calendar.MONTH) + 1;

                   //日期

                   int date1 = c3.get(Calendar.DATE);

                   System.out.println(year1 + "" + month1 + "" + date1 + "");

這裡add方法是指在c3物件的Calendar.DATE,也就是日期欄位上增加100,類內部會重新計算該日期物件中其它各欄位的值,從而獲得100天以後的日期,例如程式的輸出結果可能為:

2009617

bafter方法

                   public boolean after(Object when)

該方法的作用是判斷當前日期物件是否在when物件的後面,如果在when物件的後面則返回true,否則返回false。例如:

                   Calendar c4 = Calendar.getInstance();

                   c4.set(2009, 10 - 1, 10);

                   Calendar c5 = Calendar.getInstance();

                   c5.set(2010, 10 - 1, 10);

                   boolean b = c5.after(c4);

                   System.out.println(b);

在該示例程式碼中物件c4代表的時間是20091010號,物件c5代表的時間是20101010號,則物件c5代表的日期在c4代表的日期之後,所以after方法的返回值是true

另外一個類似的方法是before,該方法是判斷當前日期物件是否位於另外一個日期物件之前。

                   cgetTime方法

                                     public final Date getTime()

該方法的作用是將Calendar型別的物件轉換為對應的Date類物件,兩者代表相同的時間點。

類似的方法是setTime,該方法的作用是將Date物件轉換為對應的Calendar物件,該方法的宣告如下:

         public final void setTime(Date date)

轉換的示例程式碼如下:

                  Date d = new Date();

                   Calendar c6 = Calendar.getInstance();

                   //Calendar型別的物件轉換為Date物件

                   Date d1 = c6.getTime();

                   //Date型別的物件轉換為Calendar物件

                   Calendar c7 = Calendar.getInstance();

                   c7.setTime(d);

         5Calendar物件和相對時間之間的互轉

                            Calendar c8 = Calendar.getInstance();

                            long t = 1252785271098L;

                            //Calendar物件轉換為相對時間

                            long t1 = c8.getTimeInMillis();

                            //將相對時間轉換為Calendar物件

                            Calendar c9 = Calendar.getInstance();

                            c9.setTimeInMillis(t1);

在轉換時,使用Calendar類中的getTimeInMillis方法可以將Calendar物件轉換為相對時間。在將相對時間轉換為Calendar物件時,首先建立一個Calendar物件,然後再使用Calendar類的setTimeInMillis方法設定時間即可。

應用示例

下面以兩個簡單的示例介紹時間和日期處理的基本使用。

         1、計算兩個日期之間相差的天數

例如計算

相關推薦

JAVA的DateCalendar

Date類 在JDK1.0中,Date類是唯一的一個代表時間的類,但是由於Date類不便於實現國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。這裡簡單介紹一下Date類的使用。 1、使用Date類代表當前系統時間          

Java中DateCalendar的用法和轉化

Date類在JDK1.0中,Date類是唯一的一個代表時間的類,但是由於Date類不便於實現國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。這裡簡單介紹一下Date類的使用。 1、使用Date類代表當前系統時間

Java的DateCalendar

1-1 date類型 透明 and 當前 com 輸出結果 內部 pan 一、Date類   在JDK1.0中,Date類是唯一的一個代表時間的類,但是由於Date類不便於實現國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。這裏簡單介紹一下

CalendarDate的使用

ring 設定 int lis date() 當前 博客 時間戳 一周 從讀計算機專業以來一直都沒寫過博客,以後堅持寫寫博客,才疏學淺,還請大家多多指教!!!! 首先,講解Date類的使用: Date類,顧名思義是講解日期的,從JDK1.1開始到至今已經過去很久了,

關於java基礎--日期日曆Calendar詳解測試

1,Date Date d = new Date(); //建立日期比當前延遲100毫秒後的日期 Date d1 = new Date(System.currentTimeMillis()+100); 1-1,After()判斷d表示的日期是否在b1表示的之後 Syste

DateCalendar應用到計算活了多少天和判斷閏年平年

edate 判斷閏年 階段 static 字符 n) 指定 javase row 在javaSE階段,Date類和Calendar類以後會經常用到 這兩個類當中的一些常用方法 通過兩個demo 進行學習和練習 要求如下:讓用戶自己輸入yyyy-MM-dd 格式的年月日 然後

SystemRuntime

應用 load get native blog img 交互 jvm runtime PS: Java程序在不同操作系統上運行時,可能需要取得平臺相關的屬性,或者調用平臺命令來完成特定功能。java提供了System類與Runtime類來與程序的運行平臺進行交互。 Sy

FileInputStream FileReader 的區別

read != 現象 fileinput gbk 構造器 buffer class 構造函數 FileInputStream 類與 FileReader 類的區別: 兩個類的構造函數的形式和參數都是相同的,參數為 File 對象或者表示路徑的 String ,它們到底有何

JavaSE8基礎 當父中的成員變量重名了,使用super.名字 來訪問父的成員變量

public xtend tca ima his window logs java brush os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0)

派生的指針和成員函數調用原理

而且 font 重新定義 -s 繼承 轉型 center span enter 基類與派生類的指針和成員函數調用原理 1.如果以一個基礎類指針指向一個衍生類對象(派生類對象),那麽經由該指針只能訪問基礎類定義的函數(靜態聯翩) 2.如果以一個衍生類指針指向一個基礎類對象,必

java----FileInputStreamFileReader的區別(轉)

unicode ams 缺陷 自己 enc odin 通訊 n) get FileInputStream類與FileReader類的區別:兩個類的構造函數的形式和參數都是相同的,參數為File對象或者表示路徑的String,它們到底有何區別呢?? Readers and

Python 新式經典

技術分享 3.0 http eight left nbsp col 深度 image 新式類,經典類 查詢匹配 廣度查詢 橫著對每個類進行查詢 深度查詢 無視平級類,直接尋找下級類 #python 3.0 #新式類 廣度查詢 #經典類 廣

打印當前時間。學習使用DateCalendar

使用 imp main class ins 2-2 時間 http img 打印當前時間。學習使用Date類和Calendar類。 package java2; import java.util.Calendar;import java.util.Date; public

StringBuilderstring的區別

right .net 隨著 標簽 oba uil att 新的 class string本身是不可改變的,它只能賦值一次,每一次內容發生改變,都會生成一個新的對象,然後原有的對象引用新的對象,而每一次生成新對象都會對系統性能產生影響,這會降低.NET編譯器的工作效率。s

派生,父指針指向子對象

namespace 簡單工廠模式 為什麽 對象創建 簡單工廠 pos 釋放 自己的 分享 先看一段代碼: 1 #include<iostream> 2 3 using namespace std; 4 5 class Base{ 6 publi

Scanner String

Scanner類 與 String類1.1 Scanner類1.1.1 Scanner類作用用Scanner類的方法可以完成接收鍵盤錄入的數據1.1.2 Scanner類接受鍵盤錄入的字符串1.1.2.1 案例代碼一: package com.itheima_01; import java.util.Scan

python之新式經典

繼承 -i obj hit height tex wid 20px clas 經典類與新式類 經典類:P 或 P()--深度查找,向上查父節點 新式類 :P(object)---廣度查找,繼承object,新式類的方法較多 python之新式類與經典類

第2章 Scanner String

Java1.1 Scanner類1.1.1 Scanner類作用用Scanner類的方法可以完成接收鍵盤錄入的數據1.1.2 Scanner類接受鍵盤錄入的字符串1.1.2.1 案例代碼一: package com.itheima_01; import java.util.Scanner; /* * Sca

python基礎===新式經典

規則 深入 attribute nbsp 重定義 顯式 通過 對象 定義 首先: Python 2.x中默認都是經典類,只有顯式繼承了object才是新式類 Python 3.x中默認都是新式類,不必顯式的繼承object 這兩種類的區別: 新式類重定義的方法更多,當然

JAVA中初始化及默認值,包裝基本

屬於 java val 初始化 成員 als integer 基本數據 lean 當變量作為作為類成員使用時,java才確保給定其初始值,防止程序運行時錯誤 數據類型初始值 byte 0 short 0 int 0 long 0L char ‘u000