Date
Date類不常用,很多方法被廢棄了,常用它的兩個構造方法來new一個Date對象。
Date d1 = new Date(); //不傳任何參數,代表當前時間點 System.out.println(d1); //輸出 Sat Jul 13 09:51:50 CST 2019
//在Java中以1970年1月1日 00:00:00為時間原點,由於時區問題,祖國時間是8:00:00 Date d2 = new Date(4000); //傳入一個long型數值,表示在時間原點之后 System.out.println(d2); //輸出,時間過了4秒 Thu Jan 01 08:00:04 CST 1970
SimpleDateFormat
DateFormat是一個抽象類,常用它的子類SimpleDateFormat;作用:作為Date對象和String對象的中介,用於Date對象和String對象的相互轉換。
//Date對象轉換為String對象 DateFormat d3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); //定義日期格式,其中y、M、d、h、m、s等都代表固定的含義,可以參考API文檔 String str = d3.format(new Date()); System.out.println(str); //輸出 2019年07月13日 10:16:37
//String對象轉換為Date對象 DateFormat d4 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss"); //定義日期格式 Date date = d4.parse("1997年2月20日 19:20:40"); System.out.println(date); //輸出 Thu Feb 20 19:20:40 CST 1997
日期格式參照表
GregorianCalendar
Calendar是一個抽象類,常用其子類GregorianCalendar。作用:設置日歷信息,得到日歷信息,日期計算,和Date對象相互轉換。
Calendar c1 = new GregorianCalendar(); //直接定義默認當前時間點 c1 = new GregorianCalendar(2018,10,20); //可以具體定義到時分秒 System.out.println(c1); //直接輸出許多信息,可以從里面篩選出日期信息 //獲取信息 int year = c1.get(Calendar.YEAR); int month = c1.get(Calendar.MONTH); //用0-11表示數字,0表示一月,11表示十二月 int day = c1.get(Calendar.DATE); int hour = c1.get(Calendar.HOUR); int minute = c1.get(Calendar.MINUTE); int seconds = c1.get(Calendar.SECOND); System.out.println(year+"年"+month+"月"+day+"日 "+hour+":"+minute+":"+seconds); //輸出 java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2018,MONTH=10,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=20,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?] 2018年10月20日 0:0:0
//設置信息 Calendar c2 = new GregorianCalendar(); c2.set(Calendar.YEAR,1997); c2.set(Calendar.MONTH,2); c2.set(Calendar.DATE,20); //日期的計算 c2.add(Calendar.YEAR,22); //往后22年 System.out.println(c2.get(Calendar.YEAR)+"年"+Calendar.MONTH+"月"+Calendar.DATE+"日"); //輸出 2019年2月5日
//Calendar對象和Date對象之間的轉換 Calendar c3 = new GregorianCalendar(); Date date2 = c3.getTime(); //通過getTime轉換為Date對象 System.out.println(date2); Calendar c4 = new GregorianCalendar(); c4.setTime(new Date()); //通過setTime轉換為Calendar對象
打印可視化日歷的一個簡單例子:
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Scanner; public class CalendarTest { public static void main(String[] args) throws ParseException { Scanner reader = new Scanner(System.in); String str = reader.nextLine(); //獲取日期類 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = dateFormat.parse(str); Calendar calendar = new GregorianCalendar(); calendar.setTime(date); int currDay = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("日\t\t"+"一\t\t"+"二\t\t"+"三\t\t"+"四\t\t"+"五\t\t"+"六\t\t"); calendar.set(Calendar.DAY_OF_MONTH,1); for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) { System.out.print("\t\t"); } int days = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //本月天數 for (int i = 0; i < days; i++) { if(calendar.get(Calendar.DAY_OF_MONTH)==currDay){ System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"*"+"\t\t"); }else{ System.out.print(calendar.get(Calendar.DAY_OF_MONTH)+"\t\t"); } if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){ System.out.println(); } calendar.add(Calendar.DAY_OF_MONTH,1); //天數加1 } } }
2000-2-20
日 一 二 三 四 五 六
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20* 21 22 23 24 25 26
27 28 29