視頻鏈接:https://www.bilibili.com/video/BV1Cv411372m?p=121&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3 1 Data 1.1 Date類概述 Date類的對象在java中代表的是當前所在系統的此刻日期時間。 ...
視頻鏈接:https://www.bilibili.com/video/BV1Cv411372m?p=121&vd_source=9140dcc493e34a9f4e95ca2f8f71bbd3
1 Data
1.1 Date類概述
- Date類的對象在java中代表的是當前所在系統的此刻日期時間。
- Date的構造器
public Date():創建一個Date對象,代表的是系統當前此刻日期時間。 - Date的常用方法
public long getTime():獲取時間對象的毫秒值
1.2 Date類記錄時間的2種形式
- 日期對象
//1、創建一個Date對象,代表的是系統當前此刻日期時間。
Date date =new Date();
System.out.println(date); //Fri May 05 21:09:54 CST 2023
- 時間毫秒值
- 指的是從1970年1月1日 00:00:00走到此刻的總的毫秒數
//2、獲取時間毫秒值
long time = date.getTime();
System.out.println(time); //1683292462323
long times = System.currentTimeMillis();
System.out.println(times); //1683292462336
1.3 案例
- 請計算出當前時間為往後走1小時121秒之後的時間是多少
- 時間毫秒值→日期對象
- 構造器
public Date(long time):把時間毫秒值轉換成Date日期對象 - Date方法
public void setTime(long time):設置日期對象的時間為當前時間毫秒值對應的時間
- 構造器
//構造器
long time = System.currentTimeMillis();
time += (60 * 60 + 121) *1000;
Date d2 = new Date(time);
System.out.println(d2);
//Date方法
Date d3 = new Date();
d3.setDate(time);
System.out.println(d3);
2 SimpleDateFormat
2.1 SimpleDateFormat概述
- 可以對Date對象或時間毫秒值格式化我們喜歡的時間形式。
- 可以把字元串的時間形式解析成對象格式
- 格式化的時間形式的常用的模式
- y-年;M-月;d-日;
- H-時;m-分;s-秒;
- EEE-星期幾;a-上午/下午
1. SimpleDateFormat的構造器
構造器 | 說明 |
---|---|
public SimpleDateFormat() | 構造一個SimpleDateFormat,使用預設格式 |
public SimpleDateFormat(String pattern) | 構造一個SimpleDateFormat,使用指定的格式 |
//1、日期對象
Date date = new Date();
System.out.println(date); //Sat May 06 08:19:11 CST 2023
// 2、格式化這個日期對象(指定最終格式化的形式) EEE 代表去星期幾 a 取上午還是下午
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a ");
// 3、開始格式化日期對象成為字元串的形式
String rs = sdf.format(date);
System.out.println(rs); //2023年05月06日 08:19:11 星期六 上午
//4、格式化時間毫秒值
//需求:121秒之後的時間是多少
long time = System.currentTimeMillis()+121*1000;
String rs2 = sdf.format(time);
System.out.println(rs2); //2023年05月06日 08:21:12 星期六 上午
2. SimpleDateFormat的格式化方法
格式化方法 | 說明 |
---|---|
public final String(Date date) | 將日期格式化成日期/時間字元串 |
public final String(Object time) | 將時間毫秒值化成日期/時間字元串 |
例子: | |
3. SimpleDateFormat解析字元串時間成為日期對象 |
解析方法 | 說明 |
---|---|
public Date pasre(String source) | 從給定字元串的開始解析文本以生成日期 |
package com.example.test.simpledateformat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo02 {
public static void main(String[] args) throws ParseException {
//SimpleDateFormat解析字元串時間成為日期對象
//計算出2021年08月06日11點11分11秒,往後走2天14小時49分06秒後的時間是多少??
// 1、把字元串時間拿到程式中來
String dateStr = "2021年08月06日 11:11:11";
// 2、把字元串時間解析成日期對象 !!形式必須與被解析時間的形式完全一樣,否則運行時解析報錯
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = sdf.parse(dateStr);
// 3、往後走2天14小時49分06秒
long time = d.getTime() + (2L*24*60*60+14*60*60+49*60+6)*1000;
// 4、格式化時間毫秒值
String rs = sdf.format(time);
System.out.println(rs);
}
}
2.2 總結
- SimpleDateFormat可以格式化日期對象和時間毫秒值。
- SimpleDateFormat調用parse方法對字元串時間進行解析,要求解析格式必須與被解析格式一樣。
2.4 案例
需求
- 活動開始時間:2021-11-11 00:00:00
- 活動結束時間:2021-11-11 00:10:00
- 小賈下單並付款的時間為:2020年11月11日 00:03:47
- 小皮下單並付款的時間為:2022年11月11日 00:10:11
- 用代碼說明這兩位同學有沒有參加上秒殺活動?
package com.example.test.simpledateformat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo03 {
public static void main(String[] args) throws ParseException {
// 1、開始和結束時間
String startTime = "2021-11-11 00:00:00";
String endTime = "2021-11-11 00:10:00";
// 2、記錄小賈,小皮
String xiaoJia = "2021-11-11 00:03:47";
String xiaoPi = "2021-11-11 00:10:11";
// 3、解析時間
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1 = sdf.parse(startTime);
Date d2 = sdf.parse(endTime);
Date d3 = sdf.parse(xiaoJia);
Date d4 = sdf.parse(xiaoPi);
if(d3.after(d1) && d3.before(d2)){
System.out.println("小賈秒殺成功");
}else{
System.out.println("小賈秒殺失敗");
}
if(d4.after(d1) && d4.before(d2)){
System.out.println("小皮秒殺成功");
}else{
System.out.println("小皮秒殺失敗");
}
}
}
3 Calendar
3.1 Calendar概述
- Calendar代表了系統此刻日期對應的日曆對象。
- Calendar是一個抽象類,不能直接創建對象
Calendar日曆類創建日曆對象的方法
public static Calendar getInstance():獲取當前日曆對象
3.2 Calendar常用方法
方法名 | 說明 |
---|---|
public int get(int field) | 取日期中的某個欄位信息 |
public void set(int field,int value) | 修改日曆中某個欄位信息 |
public void add(int field,int amount) | 為某個欄位增加/減少指定值 |
public final Date getTime() | 拿到此刻日期對象 |
public long getTimeMillis() | 拿到此刻時間毫秒值 |
note:Calendar是可變日期對象,一旦修改後其對象本身表示的時間將產生變化。
3.3 案例
1. 案例1
package com.example.test.calendar;
import java.util.Calendar;
import java.util.Date;
public class Demo01 {
public static void main(String[] args) {
//1、拿到系統此刻日曆對象
Calendar cal = Calendar.getInstance();
//2、 獲取日期信息
int year = cal.get(Calendar.YEAR);
System.out.println(year);
int month = cal.get(Calendar.MONTH)+1;
System.out.println(month);
int days = cal.get(Calendar.DAY_OF_YEAR); //一年中的第幾天
System.out.println(days);
// 3、修改日曆中某個欄位信息
cal.set(Calendar.HOUR,12); //一般不會修改時間
// 請問64天後是什麼是時間
cal.add(Calendar.DAY_OF_YEAR, 64);
// 拿到此刻日期對象
Date time = cal.getTime();
System.out.println(time);
// 拿到此刻日期毫秒值
long times = cal.getTimeInMillis();
System.out.println(times);
}
}
2. 案例2:獲取指定日期加某幾月之後的日期
public class Demo02 {
public static void main(String[] args) throws ParseException {
String time = "2023-01-30"; //當前時間
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date currdate = format.parse(time);
System.out.println("初始的時間是:" + time);
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.MONTH, 1);
currdate = ca.getTime();
String enddate = format.format(currdate);
System.out.println("增加天數以後的時間:" + enddate);
}
}