目錄
日期和時間
1.1 Date類
1.1.1 概述
1.1.2 常用方法?
1.1.3 案例
1.2 DateFormat類?
1.2.1 概述
1.2.2 常用方法
1.3 SimpleDateFormat類
1.3.1 概述
1.3.2 構(gòu)造方法
1.3.3 模式字符?
1.3.4 日期轉(zhuǎn)字符串
1.3.5 字符串轉(zhuǎn)日期
1.4?Calendar類
1.4.1 概述
1.4.2 靜態(tài)方法
1.4.3 常用成員方法
1.4.4 成員方法中參數(shù)field的常用取值
1.4.5 練習(xí)
日期和時間
1.1 Date類
1.1.1 概述
????????java.util.Date類:表示特定的瞬間,精確到毫秒(千分之一秒),1000毫秒=1秒。毫秒值的作用,可以對時間和日期進行計算,先把日期轉(zhuǎn)換為毫秒進行計算,計算完畢,再把毫秒轉(zhuǎn)換為日期。
1.1.2 常用方法?
構(gòu)造方法:
????????Date():獲取的就是當前系統(tǒng)的日期和時間。不格式化的情況顯示格式是中國標準時間。
????????Date(Long date):傳遞毫秒值,把毫秒轉(zhuǎn)換為Date日期。
????????
成員方法:
????????Long getTime():把日期轉(zhuǎn)換為毫秒值(相當于System.currentTimeMillis()),就是計算當前日期到時間原點之間一共經(jīng)歷了多少毫秒。
????????
注:
? ? ? ? 1.時間原點(0毫秒):1970年1月1日00:00:00。
? ? ? ? 2.中國是屬于東八區(qū),會把時間增加8個小時,時間原點為:1970年1月1日08:00:00。
? ? ? ? 3.一天 = 24 * 60 * 60 = 86400秒 = 86400 * 1000 = 86400000毫秒
1.1.3 案例
要求:獲取當前日期,將當前日期轉(zhuǎn)換成毫秒值,并將毫秒值在轉(zhuǎn)換成日期。?
?源代碼:
package com.zhy.util;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
Date date = new Date();
System.out.println("獲取當前日期和時間:" + date);
Long missValue = date.getTime();
System.out.println("日期 轉(zhuǎn)換成 毫秒值:" + missValue);
Date date2 = new Date(missValue);
System.out.println("毫秒值 轉(zhuǎn)換成 日期:" + date2);
}
}
輸出結(jié)果:
1.2 DateFormat類?
1.2.1 概述
????????java.text.DateFormat類:是日期/時間格式化子類的抽象類,我們通過這個類可以幫我們完成日期(Date對象)和文本(String對象)之間的轉(zhuǎn)換,格式化(也就是日期轉(zhuǎn)換為文本),解析(文本轉(zhuǎn)換為日期)。
1.2.2 常用方法
?????????DateFormat類是一個抽象類,無法直接創(chuàng)建對象使用,可以使用DateFormat的子類(java.text.SimpleDateFormat),常用的方法如下。
String format(Date date):按照指定的模式,把Date日期,格式化為符合模式的字符串。
Date parse(String source):把符合模式的字符串,解析為Date日期。
1.3 SimpleDateFormat類
1.3.1 概述
????????SimpleDateFormat是一個用于格式化和解析日期的類。它提供了一種簡單而靈活的方式來將日期轉(zhuǎn)換為特定格式的字符串,或?qū)⒆址馕鰹槿掌趯ο蟆?/p>
1.3.2 構(gòu)造方法
格式:
????????SimpleDateFormat(String pattern);說明:用給定的模式和默認語言環(huán)境的日期格式符號構(gòu)造SimpleDateFormat。
????????參數(shù)pattern:傳遞指定的模式。
1.3.3 模式字符?
????????SimpleDateFormat使用一系列模式字符來定義日期格式,這些模式字符可以代表年、月、日、小時、分鐘、秒等各個部分的值。通過在SimpleDateFormat的構(gòu)造函數(shù)中傳入指定的日期格式模式,我們可以創(chuàng)建一個可以格式化和解析指定日期格式的SimpleDateFormat對象。
模式 | 說明 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 時 |
m | 分 |
s | 秒 |
S | 毫秒 |
模式:區(qū)分大小寫的,字母不可更改,連接模式的符號可以改變。?
1.3.4 日期轉(zhuǎn)字符串
? ? ? ? 使用SimpleDateFormat類的format()成員方法實現(xiàn)。
格式:
????????String format(Date date):把日期格式化為文本(按照指定的模式,把Date日期,格式化為符合模式的字符串)。
源代碼:
package com.zhy.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDateFormat {
public static void main(String[] args){
//1.創(chuàng)建SimpleDateFormat對象,構(gòu)造函數(shù)中傳遞指定的模式。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
//2.調(diào)用SimpleDateFormat對象中的format方法,按照構(gòu)造方法中指定的模式,把Date日期格式化為符合模式的字符串文本。
Date date = new Date();
System.out.println("沒有格式化的日期:" + date);
String dateS = sdf.format(date);
System.out.println("使用模式 yyyy-MM-dd HH:mm:ss SSS 格式化日期:" + dateS);
String dateS2 = sdf2.format(date);
System.out.println("使用模式 yyyy/MM/dd 格式化日期:" + dateS2);
}
}
輸出結(jié)果:
1.3.5 字符串轉(zhuǎn)日期
?????????使用SimpleDateFormat類的parse()成員方法實現(xiàn)。
格式:
????????Date parse(String source):把文本解析為日期(把符合模式的字符串,解析為Date日期)。
????????
注意事項:
????????parse方法聲明了一個異常,叫做ParseException(解析異常),如果字符串和構(gòu)造方法中的模式不一樣,那么程序就會拋出此異常,也就是編譯報錯,必須要處理,要么throws繼續(xù)聲明拋出這個異常,要么try…catch自己處理這個異常。
源代碼:
package com.zhy.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDateFormat {
public static void main(String[] args) throws ParseException {
//1.創(chuàng)建SimpleDateFormat對象,構(gòu)造函數(shù)中傳遞指定的模式。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
//2.調(diào)用SimpleDateFormat對象中的parse方法,把符合構(gòu)造方法中模式的字符串,解析為Date日期。
Date date = sdf.parse("2024-01-08 11:45:08");
System.out.println(date);
Date date2 = sdf2.parse("2024/01/08");
System.out.println(date2);
}
}
輸出結(jié)果:
1.4?Calendar類
1.4.1 概述
????????java.util.Calendar類:日歷類,Calendar類是一個抽象類,里面提供了很多操作日歷字段的方法(YEAR、MONTH、DAY_of_MONTH、HOUR),Calendar類無法直接創(chuàng)建對象使用,里面有一個靜態(tài)方法叫g(shù)etInstance(),該方法返回了Calendar類的子類對象。
1.4.2 靜態(tài)方法
public static Calendar getInstance():使用默認時區(qū)和語言環(huán)境獲得一個日歷。
//獲取日歷
Calendar c = Calendar.getInstance();
1.4.3 常用成員方法
public Date getTime():返回一個Date對象,表示此日歷的時間值,默認當前日期。?
public Date setTime(Date date):將此日歷的時間設(shè)置為給定日期(date)。
package com.zhy.util;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {
//日歷
Calendar c = Calendar.getInstance();
//第一次獲取日歷日期,默認當前日期
Date now = c.getTime();
//設(shè)置 當前日歷時間 為 當前日期
c.setTime(now);
}
}
public void add(int field, int amount):根據(jù)日歷的規(guī)則,在給定的日歷字段中添加或減去指定的時間量。
package com.zhy.util;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {;
//日歷
Calendar c = Calendar.getInstance();
//第一次獲取日歷日期,默認當前日期
Date now = c.getTime();
//將 日歷的當前時間 設(shè)置成當前日期
c.setTime(now);
//1.從日歷的當前時間,減去1年
c.add(Calendar.YEAR, -1);
c.setTime(now);
//2.從日歷的當前時間,加上2個月
c.add(Calendar.MONTH, 2);
c.setTime(now);
//3.從日歷的當前時間,減去10天
c.add(Calendar.DAY_OF_MONTH,-10);
}
}
public int get(int field):返回給定 日歷字段(field)?的值。
public void set(int field,int value):將給定的 日歷字段(field)?設(shè)置為 給定值(value)。public void set(int year, int month, int date):年月日。
public void set(int year, int month, int date, int hourOfDay, int minute):年月日時分。
public void set(int year, int month, int date, int hourOfDay, int minute,int second):年月日時分秒。
package com.zhy.util;
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
//日歷
Calendar c = Calendar.getInstance();
//1.設(shè)置 日歷當前日期 的年份
c.set(Calendar.YEAR,2025);
//2.設(shè)置 日歷當前日期 的年月日
c.set(2026,Calendar.MAY,19);
//3.設(shè)置 日歷當前日期 的年月日時分
c.set(2027,Calendar.MAY,19,12,30);
//4.設(shè)置 日歷當前日期 的年月日時分秒
c.set(2028,Calendar.MAY,19,12,30,59);
//5.獲取 日歷當前日期 的年份
int year = c.get(Calendar.YEAR);
System.out.println(year);
//6.獲取 日歷當前日期 的月份,取值:0-11(1月-12月)
int month = c.get(Calendar.MONTH);//month = 4,表示5月份
}
}
public int getFirstDayOfWeek():獲取一周的第一天,默認值=1(星期日)。
public void setFirstDayOfWeek(int value):設(shè)置一周的第一天。
package com.zhy.util;
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
//日歷
Calendar c = Calendar.getInstance();
//1.獲取一周的第一天,默認 值 = 1(星期日)
int firstDay= c.getFirstDayOfWeek();
//2.設(shè)置一周的第一天為周一
c.setFirstDayOfWeek(Calendar.MONDAY);
//3.再次獲取,此時 值 = 2(星期一)
firstDay= c.getFirstDayOfWeek();
}
}
1.4.4 成員方法中參數(shù)field的常用取值
Calendar.ERA:紀元,取值:只能為0(代表公元前)或1(代表公元)
Calendar.YEAR:年
Calendar.MONTH:月
Calendar.DATE:一個月中的第幾天,等同于Calendar.DAY_OF_MONTH
Calendar.HOUR:12小時制下的小時數(shù),中午和午夜表示為0
Calendar.HOUR_OF_DAY:24小時制下的小時數(shù),午夜表示為0
Calendar.MINUTE:分
Calendar.SECOND:秒
Calendar.MILLISECOND:毫秒
Calendar.AM_PM=0:時間是在中午之前還是之后,取值0(中午前)和1(中午后)????????
Calendar.DAY_OF_MONTH:一年中的第幾天(判斷當前日期是幾月份),取值0-11(1月份-12月份)
? ? 一月:Calendar.JANUARY = 0
? ? 二月:Calendar.FEBRUARY = 1
? ? 三月:Calendar.MARCH = 2
? ? 四月:Calendar.APRIL = 3
? ? 五月:Calendar.MAY = 4
? ? 六月:Calendar.JUNE = 5
? ? 七月:Calendar.JULY = 6
? ? 八月:Calendar.AUGUST = 7
? ? 九月:Calendar.SEPTEMBER = 8
? ? 十月:Calendar.OCTOBER = 9
? ? 十一月:Calendar.NOVEMBER = 10
? ? 十二月:Calendar.DECEMBER = 11
Calendar.DAY_OF_MONTH:一個月中的第幾天(判斷當前日期是幾號)
Calendar.DAY_OF_WEEK_IN_MONTH:這一天所對應(yīng)的星期幾在該月中是第幾次出現(xiàn)(判斷當前日期是這個月的第幾個星期幾)
Calendar.DAY_OF_WEEK:一周中的第幾天(判斷當前日期是周幾),取值1-7(周日-周六)
? ? 星期日:Calendar.SUNDAY=1
? ? 星期一:Calendar.MONDAY=2
? ? 星期二:Calendar.TUESDAY=3
? ? 星期三:Calendar.WEDNESDAY=4
? ? 星期四:Calendar.THURSDAY=5
? ? 星期五:Calendar.FRIDAY=6
? ? 星期六:Calendar.SATURDAY=7????????
Calendar.WEEK_OF_YEAR:一年中的第幾個星期
Calendar.WEEK_OF_MONTH:一個月中的第幾個星期????????
Calendar.firstDayOfWeek:一周中的第一天,默認1(星期日)
1.4.5 練習(xí)
源代碼:?
package com.zhy.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) throws ParseException {
//日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//獲取日歷
Calendar c = Calendar.getInstance();
//一、獲取當前日期
Date now = c.getTime();
System.out.println("當前日期:" + sdf.format(c.getTime()));
System.out.println("=============================================");
//二、獲取本周周五的日期
//1.設(shè)置 日歷當前時間 為當前日期
c.setTime(now);
//2.設(shè)置當當前日歷每周的第一天為周一,則:c.getFirstDayOfWeek()=2
c.setFirstDayOfWeek(Calendar.MONDAY);
//3.在 當前日期 的基礎(chǔ)上,根據(jù)公式推算 當前日期 距離周五 的天數(shù),進行日期偏移。
// c.get(Calendar.DAY_OF_WEEK):由于周日=1,為了符合數(shù)字和星期對應(yīng),每一天都要-1;
// 例如:周一的c.get(Calendar.DAY_OF_WEEK)=2,減一之后c.get(Calendar.DAY_OF_WEEK)=1,后面以此類推
c.add(Calendar.DATE, (c.getFirstDayOfWeek() - (c.get(Calendar.DAY_OF_WEEK) - 1) + 3));
//4.格式化日期
System.out.println("本周周五是:" + sdf.format(c.getTime()));
System.out.println("=============================================");
//三、獲取一年三月個后的倒數(shù)第五天的日期
//1.設(shè)置日歷為當前日期
c.setTime(now);
//2.在當前日期的基礎(chǔ)上加上1年4個月
c.add(Calendar.YEAR,1);
c.add(Calendar.MONTH,4);
//3.往前倒數(shù)5天,0:倒數(shù)一天,-4:倒數(shù)5天
c.set(Calendar.DAY_OF_MONTH,-4);
//4.格式化日期
System.out.println("一年三個月后的倒數(shù)第五天是:" + sdf.format(c.getTime()));
}
}
輸出結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-787718.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-787718.html
到了這里,關(guān)于【JAVA語言-第12話】API中的工具類 之 Date,DateFormat,SimpleDateFormat,Calendar類的詳細解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!