data-數據 date-時間java
Date
* -Date的每個實例用於表現一個確切的時間點
* -內部維護了一個long值,該值記錄的是:
* 1970.01.01到如今的的時間毫秒數,正數是70年以後,負數是70年以前
* -由於Date在設計上有缺陷,因此他的大部分方法都被設置成「過期的」,再也不建議使用sql
java.lang 不須要導入,能夠直接使用
* java.util 工具類
* java.io 輸入或者輸出流
* java.sql 關於數據庫操做
* java.text 文本格式數據庫
package day01; import java.text.SimpleDateFormat; import java.util.Date; /** * data-數據 date-時間 * java.util.Date * -Date的每個實例用於表現一個確切的時間點 * -內部維護了一個long值,該值記錄的是: * 1970.01.01到如今的的時間毫秒數,正數是70年以後,負數是70年以前 * -由於Date在設計上有缺陷,因此他的大部分方法都被設置成「過期的」,再也不建議使用 * * java.lang 不須要導入,能夠直接使用 * java.util 工具類 * java.io 輸入或者輸出流 * java.sql 關於數據庫操做 * java.text 文本格式 * * @author ajia * * */ public class DateDemo { public static void main(String[] args) { /* * 使用默認構造方法建立的Date類達標當前時間 */ Date now=new Date(); /* * Date重寫了toString方法,其返回的字符串爲當前時間 * Wed Aug 22 09:36:12 CST 2018 */ System.out.println(now); SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd"); String str=date.format(now); System.out.println(str); /* * Date中過時的方法 */ now.getYear();//過期 long time=now.getTime();//獲取時間毫秒數 System.out.println(time); //計算明天這個時候的時間毫秒數 time+=24*60*60*1000; System.out.println(time);//明天此時的毫秒數 /* * void setTime(long) * - 設置一個long值,使date對象表現long值表明的時間值 */ now.setTime(time); System.out.println(now); } }
java.text.SimpleDateFormat
-根據一個給定的日期格式將Date與String轉換工具
package day01; import java.text.SimpleDateFormat; import java.util.Date; /* * java.text.SimpleDateFormat * -根據一個給定的日期格式將Date與String轉換 * */ public class SimpleDateFormatDemo01 { public static void main(String[] args) { Date now=new Date(); System.out.println(now); /* * SimpleDateFormat在建立時需傳入一個時間格式 * y:年 H:小時 * M:月 m:分 * d:日 s:秒 */ //format方法將時間按照上面給定的格式以字符串的格式輸出 SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E a" ); String nowDate=date.format(now); System.out.println(nowDate); } }
課堂小練習:spa
顯示當前系統時間16天5小時35分鐘40秒以後的時間按
-格式:2018年8月25號 15:24:35設計
package day01; import java.text.SimpleDateFormat; import java.util.Date; /* * 顯示當前系統時間16天5小時35分鐘40秒以後的時間按 * -格式:2018年8月25號 15:24:35 * */ public class Work01 { public static void main(String[] args) { Date now=new Date(); now.setTime(now.getTime()+16*24*60*60*1000+5*60*60*1000+35*60*1000+40*1000); //date中的setTime方法傳入的參數是long值,用於設置當前Date SimpleDateFormat date=new SimpleDateFormat("yyyy年MM月dd號 HH:mm:ss "); String time=date.format(now); System.out.println(time); } }
Date parse(String str)
* -將給定的字符串按照SimpleDateFormat指定的日期格式解析爲一個Date對象orm
package day01; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* * 將String -》date * Date parse(String str) * -將給定的字符串按照SimpleDateFormat指定的日期格式解析爲一個Date對象 * */ public class SimpleDateFormatDemo2 { public static void main(String[] args) throws ParseException { String st="2008-08-08 20:08:08"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date=sdf.parse(st);//須要拋異常 System.out.println(date); } }
課堂小練習:對象
package day01; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; /*要求用戶輸入一個本身的生日,格式爲:1992-01-01 * -計算輸出:到如今活了多少天 * -距離10000天還有多少天 * -10000天的生日記念日是幾號 * */ public class Work2 { public static void main(String[] args) throws ParseException { System.out.println("請輸入你的出生日日期,例如:2000-01-01"); Scanner scan=new Scanner(System.in); String str=scan.nextLine(); SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd"); Date date=sd.parse(str);//拋異常 Date now=new Date(); long nowTime=now.getTime(); long birthTime=date.getTime(); long liveTime=nowTime-birthTime; liveTime/=(24*60*60*1000); System.out.println("恭喜你到如今活了:"+liveTime+"天"); //距離多少天1w天 if(liveTime<=10000){ System.out.println("距離10000天還有"+(10000-liveTime)+"天"); }else{ System.out.println("你已經超過1w天"); } //計算1w天幾年幾日的毫秒數 liveTime=(10000-liveTime)*24*60*60*1000; liveTime+=now.getTime(); now.setTime(liveTime); System.out.println("你1w天的時間記念日爲"+sd.format(now)); } }
java.util.Calendar
-該類是一個抽象類,封裝了對時間的相關操做
-可使用該類:計算時間blog
package day01; import java.util.Calendar; import java.util.Date; /** * java.util.Calendar * -該類是一個抽象類,封裝了對時間的相關操做 * -可使用該類:計算時間 * * @author ajia * */ public class CalenderDemo01 { public static void main(String[] args) { /* * -使用Calendar自帶的靜態方法建立實例。該方法會根據當前系統所在的地區 * 建立一個對應的實現,一般是GregorianCalendar(公曆) * -默認表示當前系統時間 */ Calendar calendar=Calendar.getInstance(); // System.out.println(calendar); /* * Calendar轉化成Date * Date getTime() * -返回一個Date對象,該對象表示的時間就是當前Calendar的時間 */ Date date=calendar.getTime(); System.out.println(date); //增長一天 date.setTime(24*60*60*1000); date=calendar.getTime(); System.out.println(date); /* * void setTime(Date date) * -setTime方法使calendar對象表示傳入的Date時間對象的時間 */ calendar.setTime(date); date=calendar.getTime(); System.out.println(date ); } }
注:Date.getTime()獲取的是時間的毫秒數,calendar.getTime()是將當前公曆時間返回Date型字符串
Calendar不一樣時間份量設置的方法
calendar.set(int field,int value)
package day01; import java.util.Calendar; import java.util.Date; /* * Calendar提供了針對不一樣時間份量都設置的方法 * void set(int field,int value) * -第一個參數爲時間份量:年月日...時間份量是一個int值,一般由Calendar提供 * -第二個參數爲對應的值 */ public class CalenderDemo2 { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); /* * 設置2008-08-08 */ //設置年 calendar.set(Calendar.YEAR, 2008); //設置月從0開始,故設置成7月 calendar.set(Calendar.MONTH,7); //也可使用Calendar中月的常量 //calendar.set(Calendar.MONTH, Calendar.AUGUST); //設置日 /* * Date 月中天 * Day_OF_MONTH 月中天 * Day_OF_WEEK 週中天 * Day_OF_YEARK 年中天 * */ calendar.set(Calendar.DAY_OF_MONTH,8); System.out.println(calendar.getTime()); /* * HOUR_OF_DAY:24h制 * HOUR:12h制 */ calendar.set(Calendar.HOUR_OF_DAY, 20);//設置時 calendar.set(Calendar.MINUTE, 8);//設置分 calendar.set(Calendar.SECOND, 8);//設置秒 System.out.println(calendar.getTime()); } }
Calendar對不一樣時間份量的獲取
int get (int field)
package day01; import java.util.Calendar; /** * 獲取Calendar中時間份量對應的值 * int get (int field) * 傳入一個想獲取的時間份量 * @author ajia * */ public class CalendarDemo03 { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); int year=calendar.get(Calendar.YEAR);//獲取年 int month=calendar.get(Calendar.MONTH);//獲取月 int day=calendar.get(Calendar.DAY_OF_MONTH);//獲取號 int h=calendar.get(Calendar.HOUR_OF_DAY);//獲取小時 int m=calendar.get(Calendar.MINUTE);//獲取分 int s=calendar.get(Calendar.SECOND);//獲取秒 System.out.println(year+"年"+month+"月"+day+"日"+" "+h+":"+m+":"+s); //獲取今天是星期幾 int day1=calendar.get(Calendar.DAY_OF_WEEK); System.out.println(day1); //今天是今年的第幾天 int day2=calendar.get(Calendar.DAY_OF_YEAR); System.out.println(day2); } }
Calendar中計算時間的方法
calendar add(int field,int value)
package day01; import java.util.Calendar; /** * Calendar中計算時間的方法 * -calendar add(int field,int value) * -對指定時間份量加上給定的值。若是給定的是負數,則是減去時間 * @author ajia * */ public class CalendarDemo05 { public static void main(String[] args) { /* * 查看三年兩個月零八天後時間 */ Calendar calendar=Calendar.getInstance(); calendar.add(Calendar.YEAR, 3); calendar.add(Calendar.MONTH, 2); calendar.add(Calendar.DAY_OF_YEAR, 8); System.out.println(calendar.getTime()); } }
課堂小練習:
package day03; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; /** * 輸入一個生產日期格式"yyyy-MM-dd",再輸入一個數字(保質期的天數)。 * 而後通過計算輸出促銷日期,促銷日期爲:該商品過時日前2周的週三 * @author Xiloer * */ public class Test04 { public static void main(String[] args) throws ParseException { System.out.println("請輸入生產日期,格式如:2000-01-01"); Scanner scan=new Scanner(System.in); String birthDay=scan.nextLine(); System.out.println("請輸入保質期,例如:80"); int freshDay=scan.nextInt(); // SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date date=sdf.parse(birthDay);//將字符串轉換成Date Calendar calendar=Calendar.getInstance(); calendar.setTime(date);//將用戶輸入的日期換成calendar進行計算 calendar.add(Calendar.DAY_OF_YEAR, freshDay);//計算保質期的時間 calendar.add(Calendar.DAY_OF_YEAR, -14);//減去兩禮拜前 calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);;//獲取倆禮拜前的週三 Date date1=calendar.getTime(); String str=sdf.format(date1); System.out.println(str); } }