1. 程式人生 > >JAVA之常見類(二)

JAVA之常見類(二)

JAVA之常見類(二)

六、Date類

1.概述

Date 表示特定的瞬間,精確到毫秒。

2.構造方法

Date()
          分配 Date 物件並初始化此物件,以表示分配它的時間(精確到毫秒)。
Date(long date)
          分配 Date
物件並初始化此物件,以表示自從標準基準時間(稱為“曆元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。

3.常用方法

 long getTime()
          返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 物件表示的毫秒數。
 void setTime
(long time)

          設定此 Date 物件,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後 time 毫秒的時間點。

七、SimpleDateFormat類

1.概述

父類DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。

SimpleDateFormat 是一個以與語言環境有關的方式來格式化和解析日期的具體類。它允許進行格式化(日期 -> 文字)、解析(文字 -> 日期)和規範化。

2.構造方法 

SimpleDateFormat()
          用預設的模式和預設語言環境的日期格式符號構造 SimpleDateFormat
SimpleDateFormat(String pattern)
          用給定的模式和預設語言環境的日期格式符號構造 SimpleDateFormat

3.常用方法

 String format(Date date)
          將一個 Date 格式化為日期/時間字串。
 Date parse(String source)
          從給定字串的開始解析文字,以生成一個日期。

4.案例

y Year 1996; 96
M 年中的月份 Month July; Jul; 07
D 年中的天數 Number 189
d 月份中的天數 Number 10
H 一天中的小時數(0-23) Number 0
m 小時中的分鐘數 Number 30
s 分鐘中的秒數 Number 55
Date d = new Date();							//獲取當前時間物件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//建立日期格式化類物件
System.out.println(sdf.format(d));				//將日期物件轉換為字串
//2018/12/01 19:58:38

String str = "2000年08月08日 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = sdf.parse(str);						//將時間字串轉換成日期物件
System.out.println(d);
//Tue Aug 08 08:08:08 CST 2000

需求:算一下你來到這個世界多少天?

//1,將生日字串和今天字串存在String型別的變數中
String birthday = "1983年07月08日";
String today = "2088年6月6日";
//2,定義日期格式化物件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
//3,將日期字串轉換成日期物件
Date d1 = sdf.parse(birthday);
Date d2 = sdf.parse(today);
//4,通過日期物件後期時間毫秒值
long time = d2.getTime() - d1.getTime();
//5,將兩個時間毫秒值相減除以1000,再除以60,再除以60,再除以24得到天
System.out.println(time / 1000 / 60 / 60 / 24 );
//38320

八、Calendar類

1.概述

Calendar 類是一個抽象類,它為特定瞬間與一組諸如 YEARMONTHDAY_OF_MONTHHOUR日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。

2.常用方法

static Calendar getInstance()
          使用預設時區和語言環境獲得一個日曆。
 int get(int field)
          返回給定日曆欄位的值。
abstract  void add(int field, int amount)
          根據日曆的規則,為給定的日曆欄位新增或減去指定的時間量。
 void set(int year, int month, int date)
          設定日曆欄位 YEARMONTHDAY_OF_MONTH 的值。
Calendar c = Calendar.getInstance();		//父類引用指向子類物件
//System.out.println(c);		//證明重寫了toString方法列印了物件中所有的屬性
System.out.println(c.get(Calendar.YEAR));  	//通過欄位獲取對應的值
System.out.println(c.get(Calendar.MONTH));
Calendar c = Calendar.getInstance();			//父類引用指向子類物件
//System.out.println(c);
System.out.println(c.get(Calendar.YEAR));		//通過欄位獲取年
System.out.println(c.get(Calendar.MONTH));		//通過欄位後期月,但是月是從0開始編號的
System.out.println(c.get(Calendar.DAY_OF_MONTH));    //月中的第幾天
System.out.println(c.get(Calendar.DAY_OF_WEEK));    //週日是第一天,週六是最後一天
		
System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1)) 
+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));

/*2018
*11
*1
*7
2018年12月01日星期六
*/

//如果是個數數字前面補0
public static String getNum(int num) {
	return num > 9 ? "" + num : "0" + num;
}

//將星期儲存表中進行查表
public static String getWeek(int week) {
	String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
	return arr[week];
}

注意:

1.月份從0開始計數

2.週日為第一天,週六為最後一天即第七天

Calendar c = Calendar.getInstance();			//父類引用指向子類物件
c.set(1998, 7, 9);
System.out.println(c.get(Calendar.YEAR) + "年" + getNum((c.get(Calendar.MONTH)+1)) 
+ "月" + getNum(c.get(Calendar.DAY_OF_MONTH)) + "日" + getWeek(c.get(Calendar.DAY_OF_WEEK)));

//1998年07月09日星期四

3.案例

需求:鍵盤錄入任意一個年份,判斷該年是閏年還是平年
Scanner sc = new Scanner(System.in);
System.out.println("請輸入年份,判斷該年份是閏年還是平年:");
String line = sc.nextLine();				//錄入數字字串
int year = Integer.parseInt(line);			//將數字字串轉換成數字
boolean b = getYear(year);
System.out.println(b);

private static boolean getYear(int year) {
		//2,建立Calendar c = Calendar.getInstance();
		Calendar c = Calendar.getInstance();
		//設定為那一年的3月1日
		c.set(year, 2, 1);
		//將日向前減去1
		c.add(Calendar.DAY_OF_MONTH, -1);
		//判斷是否是29天
		return c.get(Calendar.DAY_OF_MONTH) == 29;
	}