day15–Java常用類之日期相關類
Java常用類
3.日期相關類
3.1Date類
在標準Java類庫中包含一個Date類,它的對象表示一個特定的瞬間,精確到毫秒。在網上商城下單時,在對報銷單進行審核時,都需要獲取當前的時間,通過Date類就可以完成。
例子:Date類的使用
package li.normalclass.date;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
//獲取當前的時間 格式為 yyyyMMddhhmmss
Date date = new Date();//相當於new Date(System.currentTimeMillis())
//操作當前的時間
System.out.println(date.toString());//Sat Aug 06 19:15:28 CST 2022
System.out.println(date.toLocaleString());//2022-8-6 19:16:06
System.out.println(System.currentTimeMillis());//計算從1970年1月1日 0:00:00到目前為止的毫秒數
System.out.println(date.getYear());//122 =2022-1900
System.out.println(date.getMonth());//7 0-11 現在是八月
System.out.println(date.getDate());//6 日
System.out.println(date.getDay());//6 當前為星期六 註:星期日為0
System.out.println(date.getHours());//19 當前為19點
System.out.println(date.getMinutes());//26 當前為26分
System.out.println(date.getSeconds());//16 當前為16秒
System.out.println(date.getTime());//1659785176358 計算從1970年1月1日 0:00:00到目前為止的毫秒數
//獲取當前的時間 格式為 yyyyMMdd
java.sql.Date sdate = new java.sql.Date(System.currentTimeMillis());
System.out.println(sdate.toString());//2022-08-06
java.sql.Date sdate2 = java.sql.Date.valueOf("1896-9-10");
System.out.println(sdate2.toString());//1896-09-10
}
}
查看API文檔大家可以看到其實Date類中的很多方法已經過時了。JDK1.1之前的Date包含了日期操作、字元串轉化為對象等操作。經過JDK1.1之後,日期操作類一般使用Calendar類,而字元串的轉化 使用DateFormat類。
3.2DateFormat類
Format:格式
DateFormat是一個抽象類,一般使用它的子類SimpleDateFormat類來實現。主要作用就是把時間對象轉化為指定格式的字元串。反之,就是把指定格式的字元串轉化為時間對象。
字元串—–>日期
日期—–>字元串
例子:
package li.normalclass.date;
import java.text.*;
import java.util.Date;
/**
* 主要操作:
* DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定識別的格式
*
* Date date = sdf.parse(strdate);//將字元串轉換成日期
*
* String strdate2 = sdf.format(date);//將日期轉換成字元串
*/
public class TestDateFormat {
public static void main(String[] args) throws ParseException {
String strdate = "1999-12-23 12:12:12";//字元串
//String---->Date
//DateFormat是抽象類,要實例化只能引用它的子類SimpleDateFormat
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定識別的格式
Date date = sdf.parse(strdate);//將字元串轉換成日期
String strdate2 = sdf.format(date);//將日期轉換成字元串
System.out.println(strdate2);
}
}
3.3Calendar類
Calendar:日曆
例子:
package li.normalclass.date;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class TestCalendar {
public static void main(String[] args) {
//獲取當前的時間
Calendar cal = new GregorianCalendar();
// 輸出當前的時間
System.out.println(cal);
//java.util.GregorianCalendar[time=1659791839017,areFieldsSet=true,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=2022,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=218,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=17,SECOND=19,MILLISECOND=17,ZONE_OFFSET=28800000,DST_OFFSET=0]
System.out.println(cal.get(Calendar.YEAR));//2022
System.out.println(cal.get(Calendar.MONTH));//7 0~11 7代表8月
System.out.println(cal.get(Calendar.DATE));//6 代表6號
System.out.println(cal.get(Calendar.DAY_OF_WEEK));//7 代表周六 從周日為1開始計算一周
//改變時間
cal.set(Calendar.DATE,1);//直接指定日期 1號
cal.set(Calendar.MONTH,1);//直接指定月數 2月
cal.add(Calendar.DATE,2);//在設置的日期上再加上兩天
System.out.println(cal.get(Calendar.YEAR));//2022 -- 22年
System.out.println(cal.get(Calendar.MONTH));//1 -- 2月
System.out.println(cal.get(Calendar.DATE));//3 -- 3號
System.out.println(cal.get(Calendar.DAY_OF_WEEK));//5 -- 周四
System.out.println(cal.getActualMaximum(Calendar.DATE));//28 -- 指定月一共有多少天
}
}