更多文章請看本人博客https://chenjiabing666.github.io/java
版權全部,如需轉載請註明來源git
Date
類表示特定的瞬間精確到毫秒,不過從API能夠看出不少的方法已經廢棄了,這個類已經在過多使用了,不過仍是須要了解一下的,爲了後面的學習作鋪墊github
new Date()
app
long getTime()
返回計算機上面的時間,返回的是毫秒學習
setTime(long s)
用給定的毫秒值s設置時間spa
Date date=new Date(); System.out.println(date.getTime());
這個類是一個簡單的格式化日期的類,繼承與
DateFormat
,相對於父類來講使用簡單code
new SimpleDateFormat()
使用默認的格式化模板建立對象orm
new SimpleDateFormat(String pattern)
使用指定的格式化模板建立對象對象
String format(Date date)
將給定的日期格式化指定的模板的樣式,好比2017-01-29 23:22:11
繼承
applyPattern(String pattern)
將給定的格式應用於此日期的格式,至關於直接使用new Date(String pattern)
Date parse(String d)
將給定的格式化的日期格式字符串轉換成Date
對象,須要注意的是轉化的時候定義的模板必定要和字符串的日期格式的模板同樣,不然將會解析不正確的形式
使用默認的模板格式化日期
SimpleDateFormat dateFormat=new SimpleDateFormat(); //默認的格式 String formateString=dateFormat.format(date); //格式化當前的日期 System.out.println(formateString);
使用指定的模板格式化日期
String model="yyyy-MM-dd-FF HH:mm:ss"; //指定格式化的模板 SimpleDateFormat dateFormat2=new SimpleDateFormat(model); System.out.println(dateFormat2.format(date));
將格式化的日期轉換成
Date
類型的,使用的parse(String s)
,須要注意的是,下面定義的模板必定要和給定的格式化後的日期格式同樣,不然轉換後Date類型的毫秒值可能不正確
String d = "2017-06-12 22:34:19"; //給出格式化後的日期 String pattern = "yyyy-MM-dd HH:mm:ss"; //按照上面的日期格式定義模板,這個必定要徹底和上面的同樣,不然轉換不正確 SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); try { Date date = dateFormat.parse(d); //解析成Date類型 System.out.println(dateFormat.format(date)); } catch (ParseException e) { System.err.println("解析錯誤"); }
綜合使用:計算時間差
Scanner scanner=new Scanner(System.in); System.out.println("請輸入年-月-日"); String startTime=scanner.next(); System.out.println("請輸入結束時間(年-月-日)"); String endTime=scanner.next(); String moudle="yyyy-MM-dd"; //定義時間模板 //建立指定模板的解析 SimpleDateFormat dateFormat=new SimpleDateFormat(moudle); Date startDate=dateFormat.parse(startTime);//解析開始時間 Date endDate =dateFormat.parse(endTime);//解析結束時間 long time=startDate.getTime()-endDate.getTime(); //返回兩個時間的差,毫秒 int day=(int)(time/1000/60/60/24); //轉化爲天數,1秒等於1000毫秒,一分鐘等於60秒,一小時等於60分鐘,一天等於24小時 System.out.println(day);
Calendar 類是一個抽象類,它爲特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆字段之間的轉換提供了一些方法,併爲操做日曆字段(例如得到下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量。
Calendar.getInstance()
int get(int field)
返回當前對象的一些日期信息
Date getTime()
得到當前日期的Date
對象
add(int field,int amount)
根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。例如,要從當前日曆時間減去 5 天,能夠經過調用如下方法作到這一點:add(Calendar.DAY_OF_MONTH, -5)
。
setTime(Date date)
使用給定的Date
對象,設置Calendar
時間
get
方法獲取一些字段的值
Calendar calendar = Calendar.getInstance(); // 建立對象 System.out.println(calendar.get(Calendar.YEAR));// 獲取年份 System.out.println(calendar.get(Calendar.MONTH) + 1);// 月,從0開始,便是輸出5表示6月 System.out.println(calendar.get(Calendar.DATE));// 獲取一個月中的第幾天 System.out.println(calendar.get(Calendar.HOUR)); // 小時 System.out.println(calendar.get(Calendar.MINUTE)); // 分鐘 System.out.println(calendar.get(Calendar.SECOND)); // 秒 System.out.println(calendar.get(Calendar.AM_PM)); // 得到是上午仍是下午AM=0,PM=1 System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 一個月中的第幾天 System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 一週中的第幾天,星期日是第一天 System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中的第幾天 System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 一天中的第幾小時 if (calendar.get(Calendar.AM_PM) == Calendar.AM) { System.out.println("如今是上午"); } if (calendar.get(Calendar.MONTH) + 1 == Calendar.JULY) { System.out.println("如今是6月"); }
Date getTime()
方法的使用
Calendar calendar=Calendar.getInstance(); Date date=calendar.getTime(); //得到Date對象 String pattern="yyyy-MM-dd HH:mm:ss"; SimpleDateFormat dateFormat=new SimpleDateFormat(pattern); System.out.println(dateFormat.format(date));
add(int field,int amount)
方法的使用
Calendar calendar=Calendar.getInstance(); calendar.add(Calendar.DATE, -2); System.out.println(calendar.get(Calendar.DATE));
綜合實例:計算出當前的準確日期
Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(calendar.MONTH) + 1; // 從0開始算,所以加1 int date = calendar.get(Calendar.DATE); int week = calendar.get(Calendar.WEEK_OF_MONTH) + 1; // 從週日開始算,所以加1 int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int seconds = calendar.get(Calendar.SECOND); if (calendar.get(Calendar.AM_PM) == Calendar.AM) { System.out.println("如今是" + year + "年" + month + "月" + date + "號" + "星期" + week + "上午" + hour + "點" + minute + "分" + seconds + "秒"); } else { System.out.println("如今是" + year + "年" + month + "月" + date + "號" + "星期" + week + "下午" + hour + "點" + minute + "分" + seconds + "秒"); }