程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JavaSE入門學習32:Java常用類之時間日期相關類

JavaSE入門學習32:Java常用類之時間日期相關類

編輯:JAVA綜合教程

JavaSE入門學習32:Java常用類之時間日期相關類


在Java程序中與日期相關的類包括java.util.Date類、java.text.SimpleDateFormat類、java.util.calendar類和

java.util.GregorianCalendar類。在這裡我們只是簡單地介紹Date類、SimpleDateFormat類和calendar類的使用。

一Date類表示時間

(1)認識Date類

在程序開發中,經常需要處理日期和時間的相關數據,此時我們可以使用java.util包中的Date類。這個類最主要

的作用就是獲取當前時間。java.util包提供了Date類來封裝當前的日期和時間。

Date類提供兩個構造函數來實例化Date對象:

1)第一個構造函數使用當前日期和時間來初始化對象:

Date( )

2)第二個構造函數接收一個參數,該參數是從1970年1月1日起的微秒數:

Date(long millisec)

Date對象創建以後,可以調用下面的方法:

\

我們來看下Date類的使用,Java中獲取當前日期和時間很簡單,使用Date對象的toString()方法來打印當前日期和

時間,如下所示:

實例代碼為:

import java.util.*;

public class Test{
	public static void main(String[] args){
                //初始化Date對象
		Date d = new Date();
		//直接輸出日期時間
		System.out.println(d);
                //使用toString()函數顯示日期時間
		System.out.println(d.toString());
	}
}
使用Date類的默認無參構造方法創建出的對象就代表當前時間,我們可以直接輸出Date對象顯示當前的時間,也

 

可以使用Date對象的toString()方法來打印當前日期和時間顯示的結果如下:

 

\ 其中,Mon代表Monday(星期一), Mar代表March(三月),28代表28號, CST代表China Standard Time(中國標

 

准時間,也就是北京時間,東八區),2016代表2016年。

(2)日期比較

Java使用以下三種方法來比較兩個日期:

1)使用getTime( )方法獲取兩個日期(自1970年1月1日經歷的微妙數值),然後比較這兩個值。

2)使用方法before(),after()和equals()。例如,一個月的12號比18號早,則newDate(99, 2, 12).before(new Date

(99, 2, 18))返回true。

3)使用compareTo()方法,它是由Comparable接口定義的,Date類實現了這個接口。

二使用SimpleDateFormat類格式化日期

從上面的輸出結果中,我們發現,默認的時間格式不是很友好,與我們日常看到的日期格式不太一樣,如果想要

按指定的格式進行顯示,如2016-03-11 09:22:30 ,那該怎麼做呢?

SimpleDateFormat類是一個以語言環境敏感的方式來格式化和分析日期的類。SimpleDateFormat類允許你選擇任

何用戶自定義日期時間格式來運行。此時就到了java.text包中的SimpleDateFormat類,可以使用 SimpleDateFormat類

來對日期時間進行格式化,如可以將日期轉換為指定格式的文本,也可將文本轉換為日期。

(1)使用format()方法將日期轉換為指定格式的文本

實例代碼為:

 

import java.util.*;
import java.text.*;

public class Test{
	public static void main(String[] args) throws ParseException{
		//創建日期格式的字符串
		Date d = new Date();
		//創建SimpleDateFormat對象,指定目標格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//調用format()方法,格式化時間,轉換為指定格式字符串
		String day = sdf.format(d);
		//輸出轉換後的字符串
		System.out.println("當前時間:"+ day);
	}
}
代碼中的"yyyy-MM-dd HH:mm:ss"為預定義格式化字符串, yyyy表示四位年, MM表示兩位月份,dd表示兩位日

 

期,HH表示小時(使用24小時制), mm表示分鐘, ss表示秒,這樣就指定了轉換的目標格式,最後調用format()方法

將時間轉換為指定的格式的字符串。

運行結果:

\

(2)使用parse()方法將文本轉換為日期

實例代碼:

 

import java.util.*;
import java.text.*;

public class Test{
	public static void main(String[] args) throws ParseException{
		//創建日期格式的字符串
		String day = "2016年03月01日 10:30:25";
		//創建SimpleDateFormat對象,指定目標格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		//調用parse()方法,將字符串轉換為日期
		Date date = sdf.parse(day);
		//輸出轉換後的字符串
		System.out.println(date);
	}
}
代碼中的"yyyy年MM月dd日 HH:mm:ss"指定了字符串的日期格式,調用parse()方法將文本轉換為日期。

 

運行結果:

\

 

(3)需要注意事項

1)調用SimpleDateFormat對象的parse()方法時可能會出現轉換異常,即ParseException,因此需要進行異常處

理,因此這個方法並不會經常使用。

2)使用Date類時需要導入java.util包,使用SimpleDateFormat時需要導入java.text包。

實例代碼:

 

import java.util.*;
import java.text.*;

public class Test{
	public static void main(String[] args) throws ParseException{
		//使用format()方法將日期轉換為指定格式的文本
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
		SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
		//創建Date對象,表示當前時間
                Date now=new Date();
        
                //調用format()方法,將日期轉換為字符串並輸出
		System.out.println(sdf1.format(now));
		System.out.println(sdf2.format(now));
		System.out.println(sdf3.format(now));


		//使用parse(方法將文本轉換為日期
		String d = "2016-3-1 21:05:36";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
                //調用parse()方法,將字符串轉換為日期
		Date date = sdf.parse(d);
        
		System.out.println(date);
	}
}
運行結果:

 

\

三Calendar類的應用

(1)認識Calendar類

Date類最主要的作用就是獲得當前時間,同時這個類裡面也具有設置時間以及一些其他的功能,但是由於本身設

計的問題,這些方法卻遭到眾多批評,不建議使用,更推薦使用Calendar類進行時間和日期的處理。

java.util.Calendar類是一個抽象類,可以通過調用getInstance()靜態方法獲取一個Calendar對象,此對象已由當

前日期時間初始化,即默認代表當前時間,創建一個代表系統當前日期的Calendar對象,如:

 

Calendar c = Calendar.getInstance();//默認是當前日期

 

(2)Calendar類對象字段類型

Calendar類中用一下這些常量表示不同的意義,jdk內的很多類其實都是采用的這種思想:

 

\ 那麼如何使用Calendar獲取年、月、日、時間等信息呢?我們來看下面的代碼:

 

 

import java.util.*;

public class Test{
	public static void main(String[] args){
		//創建Calendar對象
		Calendar c = Calendar.getInstance();
		//獲取年
		int year = c.get(Calendar.YEAR);
		//獲取月份,0表示1月份
		int month = c.get(Calendar.MONTH);
		//獲取日期
		int day = c.get(Calendar.DAY_OF_MONTH);
		//獲取小時
		int hour = c.get(Calendar.HOUR_OF_DAY);
		//獲取分鐘
		int minute = c.get(Calendar.MINUTE);
		//獲取秒
		int second = c.get(Calendar.SECOND);
		//輸出結果
		System.out.println("當前時間:"+ year + "-" + (month+1) + "-" + day + " " + hour + ":" + minute + ":" + second);
	}
}
其中,調用Calendar類的getInstance()方法獲取一個實例,然後通過調用get()方法獲取日期時間信息,參數為需

 

要獲得的字段的值,Calendar.Year等為Calendar類中定義的靜態常量。

運行結果:

 

\

(3)Calendar類常用方法

 

Calendar類提供了getTime()方法,用來獲取Date對象,完成Calendar和Date的轉換,還可通過getTimeInMillis()

方法,獲取此Calendar的時間值,以毫秒為單位。如下所示:

 

import java.util.*;

public class Test{
	public static void main(String[] args){
		//創建Calendar對象
		Calendar c = Calendar.getInstance();
		//將Calendar對象轉換為Date對象
		Date date = c.getTime();
		//獲取當前秒數
		Long time = c.getTimeInMillis();
		//輸出結果
		System.out.println("當前時間:"+ date);
		System.out.println("當前毫秒數:"+ time);
	}
}
運行結果:

 

 

\ 實例代碼:

 

 

import java.util.*;
import java.text.*;

public class Test{
	public static void main(String[] args){
		//創建Canlendar對象
		Calendar c = Calendar.getInstance();
        
		//將Calendar對象轉換為Date對象
		Date date = c.getTime();
        
		//創建SimpleDateFormat對象,指定目標格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
		//將日期轉換為指定格式的字符串
		String now = sdf.format(date);
		System.out.println("當前時間:" + now);
	}
}
運行結果:

 

\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved