Date類(日期類)、DateFormat類(對日期類轉換為文字)、Calendar類(日曆類)--常用類
阿新 • • 發佈:2020-08-08
Date類(日期類)、DateFormat類(對日期類轉換為文字)、Calendar類(日曆類)--常用類
類Date,表示特定的瞬間,精確到毫秒。
1000毫秒 = 1秒
日期和毫秒可以相互轉換
日期-->毫秒:從1970年1月1日00:00:00到當前日期,一共經歷了多少毫秒
毫秒-->日期:1天 = 24 x 60 x 60 = 86400秒 = 86400 x 1000 = 86400000毫秒
構造方法:
public Date()//生成當前系統到1970年1月1日00:00:00之間的毫秒數----生成當前系統的時間 public Date(long date)//生成從1970年1月1日00:00:00,過了date引數毫秒的時間物件---生成特定時間,注意date型別為long
常用成員方法:
public long getTime()//返回自1970年1月1日00:00:00的毫秒數
DateFormat類---對日期進行格式化
java.text public abstract class DateFormat extends Format 是日期/時間格式的子類的抽象父類
作用:格式化(即,日期→文字),解析(文字→日期)
成員方法:
public final String format(Date date)//將日期轉化為字串
public Date parse(String source)//將字串解析為日期
DateFormat類為一個抽象類,無法建立物件使用,需用到它的實現子類SimpleDateFormat
SimpleDateFormat類extends DateFormat
java.text.SimpleDateFormat extends DateFormat
構造方法:
public SimpleDateFormat(String pattern) /*使用給定的模式和預設的預設日期格式來建立SimpleDateFormat 物件 引數:pattern 傳遞指定的日期格式 格式:區分大小寫 y 年 M 月 d 日 H 時 m 分 s 秒 對應的格式,會把格式替換成對應的日期和時間 "yyyy-MM--dd HH:mm:ss" 注意:模式中的字母不可更改,但連線符可更改 "yyyy年MM月dd日 HH時mm分ss秒" 也行 */
用父類DateFormat 中方法來講文字和日期之間相互轉化
public final String format(Date date)//將日期轉化為字串
public Date parse(String source)//將字串解析為日期
package commonclass;
import java.text.FieldPosition;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDateFormat01 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");
String format = simpleDateFormat.format(new Date());
System.out.println(format);
Date parse = simpleDateFormat.parse("2020年08月08日17時01分53秒");//這兒的source格式必須與“yyyy年MM月dd日HH時mm分ss秒”格式相對應,否則會丟擲ParseException
System.out.println(parse);
}
}
練習:
package commonclass;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//計算一個人出生了多少天
/*思路
* 1.計算當前時間的毫秒數
* 2.計算出生時間的毫秒數
* 3.兩者相減,再/1000/60/60/24*/
public class PracticeSimpleDateFormat01 {
public static void main(String[] args) throws ParseException {
Date date = new Date();//1.當前時間毫秒數
System.out.println(date.getTime());
//2.計算出生時間的毫秒數
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入出生年月日,yyyy年MM月dd日HH時mm分ss秒");
String strDate = scanner.next();
Date birth = simpleDateFormat.parse(strDate);
System.out.println(birth.getTime());
int days = (int) ((date.getTime() - birth.getTime())/1000/60/60/24);
System.out.println("你從出生到現在共活了"+days+"天");
}
}
Calendar類---日曆類
java.until.Calendar類是一個抽象類,裡面提供了許多操作日曆欄位的方法(如YEAR , MONTH , DAY_OF_MONTH , HOUR )
由於calendar類是一個抽象類,無法直接建立物件
但calendar類裡面有一個靜態方法,public static Calendar getInstance(),可以直接建立calendar類的子類物件。
Calendar類中常用的成員方法
public int get(int field)//返回給定的日曆欄位的值
public void set(int field, int value)//設定特定的日曆欄位值
public final void set(int year, int month, int date)//設定日曆的年、月、日
abstract public void add(int field, int amount)//加上或減去指定的時間到指定日曆欄位,amount可以是正負
public final Date getTime()//將日曆物件轉換為日期物件
/*引數:field
是Calendar類中的靜態成員變數
比如 public final static int YEAR = 1;
public final static int MONTH = 2;
public final static int DATE = 5;
等等等,有好多,可以在Calendar類中查詢
*/
package commonclass;
import java.util.Calendar;
import java.util.Date;
public class TestCalendar01 {
public static void main(String[] args) {
//生成calendar物件
Calendar c = Calendar.getInstance();
//設定calendar欄位
c.set(Calendar.YEAR,2000);
//增加或減少calendar指定欄位的值
c.add(Calendar.MONTH,-1);//西方月份0-11月,東方月份1-12月
System.out.println(c);//java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2000,MONTH=6,WEEK_OF_YEAR=33,WEEK_OF_MONTH=2,DAY_OF_MONTH=8,DAY_OF_YEAR=221,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=22,SECOND=45,MILLISECOND=446,ZONE_OFFSET=28800000,DST_OFFSET=0]
//將日曆物件轉化為日期物件
Date date = c.getTime();
System.out.println(date);//Sat Jul 08 21:22:45 CST 2000
}
}