java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法
Java中,可以通過以下方法將字符串轉(zhuǎn)換為Date:
String dateString = "2023-07-28"; DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date = format.parse(dateString);
在這個(gè)例子中,我們將一個(gè)字符串類型的日期轉(zhuǎn)換為Date對(duì)象。需要注意的是,我們需要使用SimpleDateFormat類來指定日期格式。
同樣地,我們也可以將Date轉(zhuǎn)換為字符串:
Date date = new Date(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String dateString = format.format(date);
Java中,可以通過以下方法將Date轉(zhuǎn)換為Calendar:
Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date);
在這個(gè)例子中,我們將當(dāng)前時(shí)間的Date對(duì)象轉(zhuǎn)換為Calendar對(duì)象。需要注意的是,我們需要使用Calendar.getInstance()方法來獲取一個(gè)Calendar實(shí)例。
同樣地,我們也可以將Calendar轉(zhuǎn)換為Date:
Calendar calendar = Calendar.getInstance(); Date date = calendar.getTime();
在這個(gè)例子中,我們將當(dāng)前時(shí)間的Calendar對(duì)象轉(zhuǎn)換為Date對(duì)象。需要注意的是,我們需要使用Calendar.getTime()方法來獲取一個(gè)Date實(shí)例。
除了轉(zhuǎn)換之外,Date和Calendar類還有許多常用的方法。以下是一些常見的方法:
- Date類方法getTime():返回自1970年1月1日00:00:00 GMT以來的毫秒數(shù)。
- toString():返回一個(gè)表示此日期的字符串。
- before(Date when):如果此日期在when之前,則返回true。
- after(Date when):如果此日期在when之后,則返回true。
- Calendar類方法get(int field):返回給定日歷字段的值。
- set(int field, int value):將給定日歷字段設(shè)置為給定值。
- add(int field, int amount):將給定的時(shí)間量添加到給定的日歷字段中。
- getTime():返回一個(gè)表示此Calendar時(shí)間值(從歷元到現(xiàn)在的毫秒偏移量)的Date對(duì)象。
- toString():返回一個(gè)表示此Calendar時(shí)間值(從歷元到現(xiàn)在的毫秒偏移量)的字符串表示形式
附:加減日期
截止目前已經(jīng)完成了 String Date Calendar 互轉(zhuǎn)了。(Calendar 到 String 恐怕只能通過 Date 中轉(zhuǎn)一下,我沒有發(fā)現(xiàn)任何無需借助 Date 的方法)
接下來該實(shí)現(xiàn)按格式輸入字符串日期,任意加減天數(shù)的需求了,用到 Calendar 的成員方法:public abstract void add(int field, int amount)
.
它能在 field
代表的時(shí)間字段上加 amount
個(gè)單位(可以為負(fù)數(shù))。字段同樣使用 Calendar 的靜態(tài)成員變量。結(jié)合例子很容易理解:
public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); System.out.println(calendar.getTime().toString()); // Mon Aug 15 18:19:55 CST 2022 calendar.add(Calendar.YEAR, 2); // Mon Aug 15 18:19:55 CST 2024 calendar.add(Calendar.MONTH, -6); // Thu Feb 15 18:19:55 CST 2024 calendar.add(Calendar.DAY_OF_MONTH, 14); // Thu Feb 29 18:19:55 CST 2024 System.out.println(calendar.getTime().toString()); // Thu Feb 29 18:19:55 CST 2024 }
最后,把上面的內(nèi)容連起來,筆者終于完成了:按指定格式 “yyyyMMdd” 傳入字符串與加減天數(shù),返回同樣格式字符串的方法:String addDay(String str, int num)
. 如下:
public class Main { /** * 對(duì)日期加減數(shù)天 * * @param yyyyMMdd 形如 "20240228" * @param day 形如 2(支持負(fù)數(shù)) * @return 形如 "20240301" */ public static String addDay(String yyyyMMdd, int day) { // String to Date SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Date date; try { date = format.parse(yyyyMMdd); } catch (ParseException e) { throw new RuntimeException(e); } // Change Date Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, day); date = calendar.getTime(); // Date to String yyyyMMdd = format.format(date); return yyyyMMdd; } public static void main(String[] args) { System.out.println(addDay("20240228", 2)); // 20240301 } }
即使天數(shù)很多也沒問題:
System.out.println(addDay("20240228", 2333)); // 20300719
也可以完全同理實(shí)現(xiàn)加減年/月/時(shí)/分/秒,等等,只需更改 field
為 Calendar.XXX
即可,不一而足。
總結(jié)
到此這篇關(guān)于java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法的文章就介紹到這了,更多相關(guān)java日期類Date和Calendar相互轉(zhuǎn)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 中使用數(shù)組存儲(chǔ)和操作數(shù)據(jù)
本文將介紹Java中常用的數(shù)組操作方法,通過詳細(xì)的示例和解釋,幫助讀者全面理解和掌握這些方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09基于Java創(chuàng)建XML(無中文亂碼)過程解析
這篇文章主要介紹了基于Java創(chuàng)建XML(無中文亂碼)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10使用Mybatis遇到的there is no getter異常
這篇文章主要介紹了使用Mybatis遇到的there is no getter異常,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09MyBatis-plus報(bào)錯(cuò)Property ‘sqlSessionFactory‘ or 
這篇文章主要給大家介紹了MyBatis-plus 報(bào)錯(cuò) Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required的兩種解決方法,如果遇到相同問題的朋友可以參考借鑒一下2023-12-12IDEA強(qiáng)制清除Maven緩存的實(shí)現(xiàn)示例
清除項(xiàng)目緩存是一個(gè)常見的操作,本文主要介紹了IDEA強(qiáng)制清除Maven緩存的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Java控制臺(tái)實(shí)現(xiàn)猜拳游戲小游戲
這篇文章主要為大家詳細(xì)介紹了Java控制臺(tái)實(shí)現(xiàn)猜拳游戲小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11使用kotlin集成springboot開發(fā)的超詳細(xì)教程
目前大多數(shù)都在使用java集成 springboot進(jìn)行開發(fā),本文演示僅僅將 java換成 kotlin,其他不變的情況下進(jìn)行開發(fā),需要的朋友可以參考下2021-09-09