1. 程式人生 > >第2章 日期相關類

第2章 日期相關類

Java

1.1 Date類
Date: 表示特定的瞬間,精確到毫秒,他可以通過方法來設定自己所表示的時間,可以表示任意的時間
1.1.1 Date類的構造方法
Date() :創建的是一個表示當前系統時間的Date對象
Date(long date) :根據"指定時間"創建Date對象
1.1.2 案例代碼五


package com.itheima_03;

import java.util.Date;

/*
 * Date: 表示特定的瞬間,精確到毫秒,他可以通過方法來設定自己所表示的時間,可以表示任意的時間
 * System.currentTimeMillis():返回的是當前系統時間,1970-1-1至今的毫秒數
 *
 * 構造方法:
 * Date() :創建的是一個表示當前系統時間的Date對象
Date(long date) :根據"指定時間"創建Date對象

 */
public class DateDemo {
public static void main(String[] args) {
//Date()
//Date d = new Date();
//System.out.println(d);//Thu Aug 26 14:17:28 CST 2049
//System.out.println(d.toLocaleString());
//Date(long date)
Date d2 = new Date(1000 * 60 * 60 * 24);//時區 有時差
System.out.println(d2.toLocaleString());

}
}

1.1.3 Date類常用方法
void setTime(long time)
long getTime()
1.1.4 案例代碼六:

 package com.itheima_03;

import java.util.Date;

/*
 * Date的常用用方法
毫秒值 --- Date
設置
返回值是void,參數long
void setTime(long time) 
Date(long date)
Date --- 毫秒值
獲取
返回long,無參數
long getTime() 
 */
public class DateDemo2 {
public static void main(String[] args) {
Date d = new Date();//默認當前系統時間
//d.setTime(1000 * 60 * 60 * 24 * 2);
System.out.println(d.toLocaleString());
System.out.println(d.getTime());//172800000
d.setTime(172800000L);
System.out.println(d.toLocaleString());
}
}

1.2 DateFormat類 & SimpleDateFormat
DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat類)允許進行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和標準化。
我們通過這個類可以幫我們完成日期和文本之間的轉換。
繼續閱讀API,DateFormat 可幫助進行格式化並解析任何語言環境的日期。對於月、星期,甚至日歷格式(陰歷和陽歷),其代碼可完全與語言環境的約定無關。
1.2.1 DateFormat&SimpleDateFormat的常用方法

要格式化一個當前語言環境下的日期也就是日期 -> 文本),要通過下面的方法來完成。DateFormat是抽象類,我們需要使用其子類SimpleDateFormat來創建對象。
A:SimpleDateFormat構造方法
技術分享圖片

B:DateFormat類方法
技術分享圖片
1.2.2 案例代碼七:

package com.itheima_04;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * SimpleDateFormat:
 * 格式化:
 * Date --- String
 * 2049-8-26 2049年8月26日
 * String format(Date date)
 * 解析:
 * String --- Date
 * "2049-8-26"
 * Date parse(String source)
 *
 * 構造方法:
 * SimpleDateFormat() :使用默認的模式進行對象的構建
 * SimpleDateFormat(String pattern) :使用的指定的模式進行對象的構建
 *
 * 註意:Exception in thread "main" java.text.ParseException: Unparseable date: "49年9月26日  下午1:29"
 *     解析的字符串,模式必須和構建對象的模式一樣
 *
 */
public class SimpleDateFormatDemo {
public static void main(String[] args) throws ParseException {
//method();
//method2();
//使用指定的模式進行對象的構建
//1999年9月1日 10:10:10
//4個小姨2個大美眉和2個小弟弟
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//格式化
Date date = new Date();
String s = sdf.format(date);
System.out.println(s);//2049年08月26日 13:39:12

//解析
Date d = sdf.parse("2049年08月26日 13:39:12");
System.out.println(d.toLocaleString());

}

private static void method2() throws ParseException {
//使用指定的模式進行對象的構建
//1999年9月1日
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
//格式化
Date date = new Date();
String s = sdf.format(date);
System.out.println(s);//2049年08月26日
//解析
Date d = sdf.parse("2049年08月26日");
System.out.println(d.toLocaleString());
}

private static void method() throws ParseException {
//使用默認模式進行對象的構建
SimpleDateFormat sdf = new SimpleDateFormat();
//創建日期對象
Date date = new Date();
//格式化 把日期對象轉換成字符串
String s = sdf.format(date);
System.out.println(s);//49-8-26 下午1:29
//解析 把字符串轉換成日期對象
Date d = sdf.parse("49年9月26日  下午1:29");
System.out.println(d.toLocaleString());
}

}

1.2.3 案例代碼八:

package com.itheima_04;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * 需求:求出你來這個世界上多少天
 */
public class SimpleDateFormatTest {
public static void main(String[] args) throws ParseException {
//出生日期
String birthday = "1998-01-01";
//今天日期
String now = "2000-01-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//將字符串轉換成日期對象
Date d1 = sdf.parse(birthday);
Date d2 = sdf.parse(now);
//將日期對象轉換成long類型
long l = d1.getTime();
long l2 = d2.getTime();
System.out.println((l2 - l) / 1000 / 60 / 60 / 24);
}
}

1.3 Calendar類1.3.1 Calendar類概述
Calendar是日歷類,在Date後出現,替換掉了許多Date的方法。該類將所有可能用到的時間信息封裝為靜態成員變量,方便獲取。
Calendar為抽象類,由於語言敏感性,Calendar類在創建對象時並非直接創建,而是通過靜態方法創建,將語言敏感內容處理好,再返回子類對象,如下:
Calendar類靜態方法
技術分享圖片
Calendar c = Calendar.getInstance(); //返回當前時間
1.3.2 Calendar類常用方法
技術分享圖片
1.3.3 案例代碼九:

package com.itheima_05;

import java.util.Calendar;

/*
 * Calendar:日歷,提供了一些操作年月日時的方法
 *
 * 獲取
 * 修改
 * 添加
 *
 *
 */
public class CalendarDemo {
public static void main(String[] args) {
//static Calendar getInstance() 
Calendar c = Calendar.getInstance();
//void set(int field, int value) :把指定的字段修改成指定的值
//c.set(Calendar.DAY_OF_MONTH, 20);
//void add(int field, int amount): 在指定的字段上加上指定的值
c.add(Calendar.DAY_OF_MONTH, -1);
//int get(int field) // 返回給定日歷字段的值
//public static final int YEAR 1
//System.out.println(Calendar.YEAR);
//int year = c.get(1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + day + "日");

}
}

第2章 日期相關類