Java常用 Date 時(shí)間格式化、Calender日歷、正則表達(dá)式的用法小結(jié)
1. SimpleDateFormat 日期格式化類(lèi)
SimpleDateFormat 是Java中用于格式化和解析日期的類(lèi)。它允許你將日期對(duì)象轉(zhuǎn)換為特定格式的字符串,或者將特定格式的字符串轉(zhuǎn)換為日期對(duì)象。
1.1 Date 類(lèi)型轉(zhuǎn) String
public final format(Date date);
方法傳入一個(gè) Date 類(lèi)型的變量,返回一個(gè)字符串;
// 指定要轉(zhuǎn)化成哪種格式的字符串 // 第一種(最常用的一種):年-月-日 時(shí)-分-秒格式。 為24小時(shí)制,例如下午一點(diǎn),顯示為 13-00-00 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 第二種: 年-月-日 時(shí)-分-秒格式。 為12小時(shí)制,例如下午一點(diǎn),就會(huì)顯示 01-00-00 SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 第三種: 年-月-日 格式。 SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd"); // 獲取當(dāng)前時(shí)間。 實(shí)際開(kāi)發(fā)則從數(shù)據(jù)庫(kù)查詢(xún)獲得,或由前端傳入獲取 Date date = new Date(); // 將當(dāng)前時(shí)間格式化成指定格式的字符串 String formatDate1 = simpleDateFormat1.format(date); System.out.println("yyyy-MM-dd HH:mm:ss 格式轉(zhuǎn)化為字符串:"+ formatDate1); String formatDate2 = simpleDateFormat2.format(date); System.out.println("yyyy-MM-dd hh:mm:ss 格式轉(zhuǎn)化為字符串:"+ formatDate2); String formatDate3 = simpleDateFormat3.format(date); System.out.println("yyyy-MM-dd 格式轉(zhuǎn)化為字符串:"+ formatDate3);
運(yùn)行代碼,如下所示
1.2 String 類(lèi)型轉(zhuǎn) Date
public Date parse(String source) throws ParseException;
方法傳入一個(gè)字符串,返回一個(gè) Date 類(lèi)型的對(duì)象;
// 指定要轉(zhuǎn)化成哪種格式的字符串 // 第一種(最常用的一種):年-月-日 時(shí)-分-秒格式。 為24小時(shí)制,例如下午一點(diǎn),顯示為 13-00-00 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 第二種: 年-月-日 時(shí)-分-秒格式。 為12小時(shí)制,例如下午一點(diǎn),就會(huì)顯示 01-00-00 SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 第三種: 年-月-日 格式。 SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd"); String dateString1 = "2012-12-12 12:12:12"; String dateString2 = "2022-12-12 12:12:12"; String dateString3 = "2032-12-12"; try { Date date1 = simpleDateFormat1.parse(dateString1); Date date2 = simpleDateFormat2.parse(dateString2); Date date3 = simpleDateFormat3.parse(dateString3); System.out.println(date1); System.out.println(date2); System.out.println(date3); } catch (ParseException e) { throw new RuntimeException(e);
運(yùn)行上述代碼,如下所示
2. Calendar 日歷類(lèi)
Calendar
類(lèi)是Java中用于操作日期和時(shí)間的抽象類(lèi)。它提供了一些方法來(lái)獲取和設(shè)置日期和時(shí)間,以及進(jìn)行日期和時(shí)間的計(jì)算。
(1) getInstance():獲取一個(gè)表示當(dāng)前日期和時(shí)間的Calendar實(shí)例;
(2) get(int field):獲取指定字段的值。字段可以是Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH等;但這里要注意,月份是從0~11,因此當(dāng)我們要轉(zhuǎn)化成具體的某一個(gè)月時(shí),需要+1;
(3) getTime():將 Calendar
對(duì)象轉(zhuǎn)換為 Date
對(duì)象;
(4) setTime(Date date):將 Date
對(duì)象設(shè)置為 Calendar
對(duì)象的日期和時(shí)間;
Calendar calendar = Calendar.getInstance(); System.out.println("calender 對(duì)象:" +calendar.getTime()); // 獲取年份 int year = calendar.get(Calendar.YEAR); System.out.println("獲取 calender 對(duì)象的年份" +year); // 獲取月份 int month = calendar.get(Calendar.MONTH); System.out.println("獲取 calender 對(duì)象的月份,未+1" +month); // 獲取日期 int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("獲取 calender 對(duì)象的日期" +dayOfMonth); // 打印當(dāng)前日期和時(shí)間,月份進(jìn)行+1 System.out.println(year + "-" + (month + 1) + "-" + dayOfMonth); // 轉(zhuǎn)化為 date 對(duì)象 Date date = calendar.getTime(); System.out.println("轉(zhuǎn)化為 Date 類(lèi)型對(duì)象:"+ date);
運(yùn)行上述代碼如下所示
3. 正則表達(dá)式
正則表達(dá)式大家都不陌生,雖然對(duì)于初學(xué)者來(lái)說(shuō)寫(xiě)起來(lái)不太簡(jiǎn)單,但用起來(lái)是真的香!
通常都是將正則條件寫(xiě)成一個(gè)字符串,然后在去調(diào)用 String 字符串類(lèi)中已經(jīng)寫(xiě)好的 "matches" 正則方法,方法會(huì)返回一個(gè)布爾類(lèi)型的值。
3.1 正則表達(dá)式的組成部分
(1)字符類(lèi):用于匹配特定類(lèi)型的字符。例如 [abc] 匹配字符 a,b,c;[a-z] 則表示匹配26個(gè)小寫(xiě)字母,[A-Z] 則表示匹配26個(gè)大寫(xiě)字母,[0-9] 表示匹配0~9的數(shù)字;
(2)量詞:用于指定匹配的字符數(shù)量。例如 a* 匹配零個(gè)或多個(gè),a+ 表示匹配一個(gè)或多個(gè),a? 表示匹配零個(gè)或一個(gè);
(3)錨點(diǎn):用于指定匹配的位置。例如 "^"表示匹配的開(kāi)始,“”
(4)分組:分組用于將多個(gè)字符或模式組合在一起。例如(abc)匹配 abc,(abc|def)匹配 abc 或 def。
(5)轉(zhuǎn)義字符:轉(zhuǎn)義字符用于匹配特殊字符。例如 \d 匹配任何數(shù)字,\w 匹配任何字母,數(shù)字或下劃線。
(6)預(yù)查:預(yù)查用于指定匹配的模式必須滿(mǎn)足的條件,但不包括匹配結(jié)果中。例如 (?=abc)表示匹配的位置后面必須是 abc。
當(dāng)然了,上述六個(gè)是正則表達(dá)式的基本組成部分,還有很多高級(jí)的組成部分,包括反向引用,非獲取組,注釋等。
3.2 手機(jī)號(hào)正則表達(dá)式
想要校驗(yàn)一個(gè)手機(jī)號(hào)是否合法,首先要知道手機(jī)號(hào)的基本構(gòu)成。這里擴(kuò)展一個(gè)冷知識(shí)。
(1)手機(jī)號(hào)都是以 "1" 開(kāi)頭,這個(gè)大家都知道;
(2)手機(jī)號(hào)碼第二位不可能是 "0","1","2";第三可以是任意數(shù)字;后面8位也是隨機(jī)數(shù)字;
(3)中國(guó)三大運(yùn)行商,移動(dòng),聯(lián)通,電信分別運(yùn)營(yíng)不同的特有號(hào)碼片段,正是通過(guò)第二位和第三位數(shù)字來(lái)區(qū)分屬于哪個(gè)運(yùn)營(yíng)商的。
代碼如下
// ^:表示字符串的開(kāi)始。 // 1:表示手機(jī)號(hào)的第一位必須是1。 // [3456789]:表示手機(jī)號(hào)的第二位必須是3、4、5、6、7、8、9中的一個(gè)。 // \\d{9}:表示手機(jī)號(hào)的后面9位必須是數(shù)字。第一個(gè) "\" 表示轉(zhuǎn)義符 // $:表示字符串的結(jié)束。 String regex = "^1[3456789]\\d{9}$"; // 現(xiàn)在手機(jī)號(hào)直接定義一個(gè),實(shí)際開(kāi)發(fā)會(huì)由前端傳給我們 String phoneNumber = "13812345678"; if (phoneNumber.matches(regex)) { System.out.println("手機(jī)號(hào)格式正確"); } else { System.out.println("手機(jī)號(hào)格式錯(cuò)誤"); }
3.3 常用密碼校驗(yàn)正則表達(dá)式
密碼就沒(méi)啥可說(shuō)的了,安全性高一些的網(wǎng)站或者APP,可能會(huì)強(qiáng)制要求至少包含一個(gè)大小寫(xiě)、數(shù)字、特殊字符,且不能含有空格,長(zhǎng)度通常為8~16位。
// 至少包含一個(gè)大寫(xiě)字母:(?=.*[A-Z]) // 至少包含一個(gè)小寫(xiě)字母:(?=.*[a-z]) // 至少包含一個(gè)數(shù)字:(?=.*\\d) // 至少包含一個(gè)特殊字符:(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':"\\|,.<>\\/?]) // 不允許有空格:^[^\\s]+$ // 至少8個(gè)字符且不多于16個(gè)字符:^.{8,}$ String regex = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\|,.<>\\/?]).{8,16}$"; String password = "Abc123!@#"; if (password.matches(regex)) { System.out.println("密碼符合要求"); } else { System.out.println("密碼不符合要求"); }
到此這篇關(guān)于Java常用 Date 時(shí)間格式化、Calender日歷、正則表達(dá)式的用法的文章就介紹到這了,更多相關(guān)java date時(shí)間格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC如何正確接收時(shí)間的請(qǐng)求示例分析
這篇文章主要為大家介紹了SpringMVC如何正確接收時(shí)間的請(qǐng)求示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09SpringBoot如何對(duì)LocalDateTime進(jìn)行格式化并解析
這篇文章主要介紹了SpringBoot如何對(duì)LocalDateTime進(jìn)行格式化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07java web實(shí)現(xiàn)簡(jiǎn)單聊天室
這篇文章主要為大家詳細(xì)介紹了java-web實(shí)現(xiàn)簡(jiǎn)單聊天室,含拍一拍功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11Java中float類(lèi)型的范圍及其與十六進(jìn)制的轉(zhuǎn)換例子
這篇文章主要介紹了Java中float類(lèi)型的范圍及其與十六進(jìn)制的轉(zhuǎn)換例子,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-10-10SpringBoot SSE服務(wù)端主動(dòng)推送事件的實(shí)現(xiàn)
本文主要介紹了SpringBoot SSE服務(wù)端主動(dòng)推送事件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Spring?Cloud?OpenFeign?遠(yuǎn)程調(diào)用
這篇文章主要介紹了Spring?Cloud?OpenFeign?遠(yuǎn)程調(diào)用,本文通過(guò)遠(yuǎn)程調(diào)用的GitHub開(kāi)放API用到的OpenFeign作為示例代碼作為入口進(jìn)行講解。然后以圖解+解讀源碼的方式深入剖析了OpenFeign的運(yùn)行機(jī)制和架構(gòu)設(shè)計(jì),需要的朋友可以參考一下2022-08-08