<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
java.util.Date
類 表示特定的瞬間,精確到毫秒。 繼續查閱Date類的描述,發現Date擁有多個建構函式,只是部分已經過時,但是其中有未過時的建構函式可以把毫秒值轉成日期物件。
public Date()
:分配Date物件並初始化此物件,以表示分配它的時間(精確到毫秒)。public Date(long date)
:分配Date物件並初始化此物件,以表示自從標準基準時間(稱為“曆元(epoch)”,即1970年1月1日00:00:00 GMT)以來的指定毫秒數。tips: 由於我們處於東八區,所以我們的基準時間為1970年1月1日8時0分0秒。
簡單來說:使用無參構造,可以自動設定當前系統時間的毫秒時刻;指定long型別的構造引數,可以自定義毫秒時刻。例如:
import java.util.Date; public class Demo01Date { public static void main(String[] args) { // 建立日期物件,把當前的時間 System.out.println(new Date()); // Sun Apr 17 16:33:27 CST 2022 // 建立日期物件,把當前的毫秒值轉成日期物件 System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970 } }
tips:在使用println方法時,會自動呼叫Date類中的toString方法。Date類對Object類中的toString方法進行了覆蓋重寫,所以結果為指定格式的字串。
Date類中的多數方法已經過時,常用的方法有:
public long getTime()
把日期物件轉換成對應的時間毫秒值。java.text.DateFormat
是日期/時間格式化子類的抽象類,我們通過這個類可以幫我們完成日期和文字之間的轉換,也就是可以在Date物件與String物件之間進行來回轉換。
由於DateFormat為抽象類,不能直接使用,所以需要常用的子類java.text.SimpleDateFormat
。這個類需要一個模式(格式)來指定格式化或解析的標準。構造方法為:
public SimpleDateFormat(String pattern)
:用給定的模式和預設語言環境的日期格式符號構造SimpleDateFormat。引數pattern是一個字串,代表日期時間的自定義格式。
常用的格式規則為:
標識字母(區分大小寫) | 含義 |
---|---|
y | 年 |
M | 月 |
d | 日 |
H | 時 |
m | 分 |
s | 秒 |
備註:更詳細的格式規則,可以參考SimpleDateFormat類的API檔案。
建立SimpleDateFormat物件的程式碼如:
import java.text.DateFormat; import java.text.SimpleDateFormat; public class Demo02SimpleDateFormat { public static void main(String[] args) { // 對應的日期格式如:2020-01-20 13:14:20 DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }
DateFormat類的常用方法有:
public String format(Date date)
:將Date物件格式化為字串。public Date parse(String source)
:將字串解析為Date物件。使用format方法的程式碼為:
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; /* 把Date物件轉換成String */ public class Demo03DateFormatMethod { public static void main(String[] args) { Date date = new Date(); // 建立日期格式化物件,在獲取格式化物件時可以指定風格 DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); String str = df.format(date); System.out.println(str); // 2022年3月23日 } }
使用parse方法的程式碼為:
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* 把String轉換成Date物件 */ public class Demo04DateFormatMethod { public static void main(String[] args) throws ParseException { DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); String str = "2021年12月11日"; Date date = df.parse(str); System.out.println(date); // Tue Dec 11 00:00:00 CST 2021 } }
請使用日期時間相關的API,計算出一個人已經出生了多少天。 思路:
程式碼實現:
public static void function() throws Exception { System.out.println("請輸入出生日期 格式 yyyy-MM-dd"); // 獲取出生日期,鍵盤輸入 String birthdayString = new Scanner(System.in).next(); // 將字串日期,轉成Date物件 // 建立SimpleDateFormat物件,寫日期模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 呼叫方法parse,字串轉成日期物件 Date birthdayDate = sdf.parse(birthdayString); // 獲取今天的日期物件 Date todayDate = new Date(); // 將兩個日期轉成毫秒值,Date類的方法getTime long birthdaySecond = birthdayDate.getTime(); long todaySecond = todayDate.getTime(); long secone = todaySecond-birthdaySecond; if (secone < 0){ System.out.println("還沒出生呢"); } else { System.out.println("出生的天數:"+secone/1000/60/60/24); } }
java.util.Calendar
是日曆類,在Date後出現,替換掉了許多Date的方法。該類將所有可能用到的時間資訊封裝為靜態成員變數,方便獲取。日曆類就是方便獲取各個時間屬性的。
Calendar為抽象類,由於語言敏感性,Calendar類在建立物件時並非直接建立,而是通過靜態方法建立,返回子類物件,如下: Calendar靜態方法
public static Calendar getInstance()
:使用預設時區和語言環境獲得一個日曆例如:
import java.util.Calendar; public class Demo06CalendarInit { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); } }
根據Calendar類的API檔案,常用方法有:
public int get(int field)
:返回給定日曆欄位的值。public void set(int field, int value)
:將給定的日曆欄位設定為給定值。public abstract void add(int field, int amount)
:根據日曆的規則,為給定的日曆欄位新增或減去指定的時間量。public Date getTime()
:返回一個表示此Calendar時間值(從曆元到現在的毫秒偏移量)的Date物件。Calendar類中提供很多成員常數,代表給定的日曆欄位:
欄位值 | 含義 |
---|---|
YEAR | 年 |
MONTH | 月(從0開始,可以+1使用) |
DAY_OF_MONTH | 月中的天(幾號) |
HOUR | 時(12小時制) |
HOUR_OF_DAY | 時(24小時制) |
MINUTE | 分 |
SECOND | 秒 |
DAY_OF_WEEK | 週中的天(周幾,週日為1,可以-1使用) |
get方法用來獲取指定欄位的值,set方法用來設定指定欄位的值,程式碼使用演示:
import java.util.Calendar; public class CalendarUtil { public static void main(String[] args) { // 建立Calendar物件 Calendar cal = Calendar.getInstance(); // 設定年 int year = cal.get(Calendar.YEAR); // 設定月 int month = cal.get(Calendar.MONTH) + 1; // 設定日 int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); } }
import java.util.Calendar; public class Demo07CalendarMethod { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2020); System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2020年1月17日 } }
add方法可以對指定日曆欄位的值進行加減操作,如果第二個引數為正數則加上偏移量,如果為負數則減去偏移量。程式碼如:
import java.util.Calendar; public class Demo08CalendarMethod { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2022年4月17日 // 使用add方法 cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天 cal.add(Calendar.YEAR, -3); // 減3年 System.out.print(year + "年" + month + "月" + dayOfMonth + "日"); // 2019年4月19日; } }
Calendar中的getTime方法並不是獲取毫秒時刻,而是拿到對應的Date物件。
import java.util.Calendar; import java.util.Date; public class Demo09CalendarMethod { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); Date date = cal.getTime(); System.out.println(date); // Tue Jan 16 16:03:09 CST 2022 } }
到此這篇關於Java日期時間類(Date、DateFormat、Calendar)解析的文章就介紹到這了,更多相關Java日期時間類 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45