日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新手小白学JAVA 日期类Date SimpleDateFormat Calendar

發(fā)布時(shí)間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新手小白学JAVA 日期类Date SimpleDateFormat Calendar 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. Date日期類

類 Date 表示一個(gè)特定的瞬間,精確到毫秒

1.1 Date的構(gòu)造函數(shù)

Date() 分配一個(gè) Date 對(duì)象,以表示分配它的時(shí)間(精確到毫秒)
Date(long date) 分配一個(gè) Date 對(duì)象,表示自從標(biāo)準(zhǔn)基準(zhǔn)時(shí)間起指定時(shí)間的毫秒數(shù)
標(biāo)準(zhǔn)基準(zhǔn)時(shí)間:稱為“歷元(epoch)”,即 1970 年 1 月 1 日 00:00:00

1.2 Date的構(gòu)造函數(shù)練習(xí)

創(chuàng)建包:cn.cxy.date
創(chuàng)建類:TestDate1

package cn.cxy.date;import java.util.Date;/*本類用于Date的入門*/ public class TestDate1 {public static void main(String[] args) {//1.利用無參構(gòu)造創(chuàng)建Date類對(duì)象,注意導(dǎo)包:import java.util.Date;Date d1= new Date();System.out.println(d1);//Thu Sep 23 23:14:59 CST 2021//2.利用含參構(gòu)造創(chuàng)建Date對(duì)象long t = 1000*60*60;//1000ms*60*60->1min*60->1hDate d2 = new Date(t);//從標(biāo)準(zhǔn)基礎(chǔ)時(shí)間1970-1-1-00:00開始往后數(shù)1hSystem.out.println(d2);//Thu Jan 01 09:00:00 CST 1970//CST是中國時(shí)區(qū),所以額外加了8h變成了09:00:00} }

常用時(shí)間縮寫
GMT 格林尼治時(shí)間 = UTC 協(xié)調(diào)世界時(shí)間
UTC + 時(shí)區(qū)差 = 本地時(shí)間,我們是在東八區(qū),東加西減,所以
CST 中國標(biāo)準(zhǔn)時(shí)間:China Standard Time UT+8:00

1.3 Date的常用方法練習(xí)

getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對(duì)象表示的毫秒值
setTime(long time) 設(shè)置時(shí)間,表示 1970 年 1 月 1 日 00:00:00 GMT 后的毫秒值

創(chuàng)建包:cn.cxy.date
創(chuàng)建類:TestDate2

package cn.cxy.date;import java.util.Date;/*本類用于Date的常用方法測(cè)試*/ public class TestDate2 {public static void main(String[] args) {//1.創(chuàng)建Date對(duì)象Date d1 = new Date();//2.獲取從標(biāo)準(zhǔn)基準(zhǔn)時(shí)間到現(xiàn)在時(shí)間的毫秒值,是一個(gè)時(shí)間差System.out.println(d1.getTime());//1632404114206//*1.0是為了變成浮點(diǎn)型,/1000變成秒,/60變成分,/60變成小時(shí),/24變成天,/365變成年System.out.println(d1.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365);//約等于51,從1970到2021//3.打印d1就是當(dāng)前的時(shí)間System.out.println(d1);//Thu Sep 23 21:39:29 CST 2021//4設(shè)置一個(gè)long值,作為毫秒為單位的時(shí)間差long t = 1000*60*60;d1.setTime(t);System.out.println(d1);//打印的就是從標(biāo)準(zhǔn)基準(zhǔn)時(shí)間經(jīng)過時(shí)間差t的時(shí)間} }

2. SimpleDateFormat

SimpleDateFormat 常用于格式化和解析日期
日期和時(shí)間格式由日期和時(shí)間模式字符串指定,字母與日期時(shí)間的對(duì)應(yīng)關(guān)系如下:

2.1 常用構(gòu)造函數(shù)

SimpleDateFormat() 用默認(rèn)模式的日期格式構(gòu)造 SimpleDateFormat
SimpleDateFormat(String pattern) 用給定模式的日期格式構(gòu)造 SimpleDateFormat

2.2 日期轉(zhuǎn)換格式工具類練習(xí)

創(chuàng)建包:cn.cxy.date
創(chuàng)建類:TestSDF.java

package cn.cxy.date;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*本類用于測(cè)試SimpleDateFormat類*/ public class TestSDF {public static void main(String[] args) throws ParseException {/*01 格式化:從 Date 到 String*///1.創(chuàng)建日期類對(duì)象,包含當(dāng)前的時(shí)間Date d = new Date();//2.創(chuàng)建日期轉(zhuǎn)換工具類的對(duì)象,此時(shí)使用的是無參構(gòu)造//SimpleDateFormat sdf = new SimpleDateFormat();SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");//3.通過剛剛創(chuàng)建好的工具類對(duì)象轉(zhuǎn)換日期的格式String s = sdf2.format(d);//4.打印轉(zhuǎn)換好的時(shí)間字符串://默認(rèn)時(shí)間格式:21-9-23 下午11:18//自定義時(shí)間格式:2021/09/23 10:21:39System.out.println(s);/*解析:從String到 Date*///1.定義一個(gè)時(shí)間字符串String s2 = "2021/9/23 22:24:03";//報(bào)錯(cuò):ParseException解析異常: Unparseable date不可分割日期: "2021/9/23 22:24:03"//SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");//2.利用含參構(gòu)造創(chuàng)建工具類對(duì)象,指定格式,注意必須是規(guī)定格式,否則會(huì)拋出異常SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");//3.利用工具類對(duì)象對(duì)日期進(jìn)行轉(zhuǎn)換Date d2= sdf3.parse(s2);//4.打印轉(zhuǎn)換好的日期System.out.println(d2);//Thu Sep 23 22:24:03 CST 2021} }

2.3 日期轉(zhuǎn)換綜合練習(xí)

創(chuàng)建包:cn.cxy.date2
創(chuàng)建工具類:DateUtils.java

package cn.cxy.date2;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*本類用作日期類的工具類,一般工具類的要求: * 構(gòu)造方法私有化 & 成員方法靜態(tài)化*/ public class DateUtils {//1.創(chuàng)建一個(gè)私有化的構(gòu)造方法private DateUtils(){}//2.創(chuàng)建一個(gè)將日期轉(zhuǎn)換為字符串的方法//參數(shù):日期對(duì)象Date 日期轉(zhuǎn)換的格式:format 返回值類型:Stringpublic static String dateToString(Date date, String format){//1.通過傳入的日期格式,創(chuàng)建指定的工具類對(duì)象SimpleDateFormat sdf = new SimpleDateFormat(format);//2.通過工具類對(duì)象將字符串轉(zhuǎn)換為對(duì)應(yīng)的日期字符串,并拿到轉(zhuǎn)換后的字符串結(jié)果String s = sdf.format(date);/*轉(zhuǎn)換*///3.將最終轉(zhuǎn)換的字符串結(jié)果返回return s;}//3.創(chuàng)建一個(gè)將字符串轉(zhuǎn)換為日期的方法//參數(shù):字符串對(duì)象String 日期轉(zhuǎn)換的格式:format 返回值類型:Datepublic static Date stringToDate(String s, String format) throws ParseException {//1.通過傳入的日期格式,創(chuàng)建指定的工具類對(duì)象SimpleDateFormat sdf = new SimpleDateFormat(format);//2.通過工具類對(duì)象將日期對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的字符串,并拿到轉(zhuǎn)換后的日期對(duì)象Date d = sdf.parse(s);/*解析*///3.將最終轉(zhuǎn)換的日期對(duì)象作為方法的結(jié)果返回return d;} }

創(chuàng)建包:cn.cxy.date2
創(chuàng)建測(cè)試類:TestDate.java

package cn.cxy.date2;import java.text.ParseException; import java.util.Date;/*本類用于自定義日期工具類的測(cè)試類*/ public class TestDate {public static void main(String[] args) throws ParseException {//1.創(chuàng)建日期類對(duì)象Date d = new Date();//2.調(diào)用自定義日期工具類的功能:將日期對(duì)象轉(zhuǎn)換成字符串String s = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");String s2 = DateUtils.dateToString(d, "yyyy年MM月dd日");String s3 = DateUtils.dateToString(d, "HH:mm:ss");System.out.println(s);//2021年09月23日 10:55:32System.out.println(s2);//2021年09月23日System.out.println(s3);//10:58:21//3.調(diào)用自定義工具類的功能,將字符串轉(zhuǎn)換為對(duì)應(yīng)的日期對(duì)象//注意,此處的format格式必須與s字符串定義時(shí)的格式一致!!!否則轉(zhuǎn)換會(huì)報(bào)錯(cuò)!Date d2 = DateUtils.stringToDate(s, "yyyy年MM月dd日 HH:mm:ss");System.out.println(d2);//Thu Sep 23 23:01:21 CST 2021} }

3.Calendar日歷類

3.1 概念

Calendar 類是一個(gè)抽象類,不可直接實(shí)例化,但是它有一個(gè)直接已知子類GregorianCalendar
它為特定瞬間與還有比如年月日等日歷字段之間的轉(zhuǎn)換和操作提供了一些方法

3.2 常用方法

Calendar提供了一個(gè)方法getInstance()用于獲取Calendar對(duì)象,它的日歷字段就是當(dāng)前的日期

int get(int field) 返回給定日歷字段的值
abstract void add(int field, int amount) 根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時(shí)間量
void set(int year, int month, int date) 設(shè)置日歷字段 YEAR、MONTH 和 DAY_OF_MONTH 的值

3.3 入門案例

創(chuàng)建包:cn.cxy.date3
創(chuàng)建類:TestCalendar.java

package cn.cxy.date3;import org.junit.Test;import java.util.Calendar;/*本類用于練習(xí)日歷類*/ public class TestCalendar {@Testpublic void TestGet(){//1.獲取日歷對(duì)象Calendar c = Calendar.getInstance();System.out.println(c);//能獲取很多信息,比如MONTH=8,我們現(xiàn)在是9月,說明月份是從0開始的//2.通過獲取到的日歷對(duì)象,調(diào)用get(),傳入對(duì)應(yīng)的日歷字段,就可以拿到對(duì)應(yīng)的值int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;int day = c.get(Calendar.DAY_OF_MONTH);System.out.println(year + "年" + month + "月" + day + "日");//2021年9月24日}@Testpublic void TestAdd1(){//1.獲取日歷對(duì)象Calendar c = Calendar.getInstance();//2.給指定的日歷字段進(jìn)行指定數(shù)目的加減操作,得到10年后的今天c.add(Calendar.YEAR,+10);//3.通過獲取到的日歷對(duì)象,調(diào)用get(),傳入對(duì)應(yīng)的日歷字段,就可以拿到對(duì)應(yīng)的值int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;int day = c.get(Calendar.DAY_OF_MONTH);//4.打印的就是10年后的今天:2031年9月24日System.out.println(year + "年" + month + "月" + day + "日");}@Testpublic void TestAdd2(){//需求:打印1年后的7天后//1.獲取日歷對(duì)象Calendar c = Calendar.getInstance();//2.給指定的日歷字段進(jìn)行指定數(shù)目的加減操作,得到10年后的今天c.add(Calendar.YEAR,+1);c.add(Calendar.DAY_OF_MONTH,+7);//3.通過獲取到的日歷對(duì)象,調(diào)用get(),傳入對(duì)應(yīng)的日歷字段,就可以拿到對(duì)應(yīng)的值int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;int day = c.get(Calendar.DAY_OF_MONTH);//4.打印1年后的7天后:2022年10月1日System.out.println(year + "年" + month + "月" + day + "日");}@Testpublic void TestSet(){//1.獲取日歷對(duì)象Calendar c = Calendar.getInstance();//2.測(cè)試set方法c.set(2099,9,1);//3.通過獲取到的日歷對(duì)象,調(diào)用get(),傳入對(duì)應(yīng)的日歷字段,就可以拿到對(duì)應(yīng)的值int year = c.get(Calendar.YEAR);int month = c.get(Calendar.MONTH)+1;int day = c.get(Calendar.DAY_OF_MONTH);//4.打印:2099年10月1日System.out.println(year + "年" + month + "月" + day + "日");} }

3.4 鞏固案例

創(chuàng)建包:cn.cxy.date3
創(chuàng)建類:TestCalendar.java
需求:用戶任意輸入一個(gè)年份,輸出這年的2月有多少天

package cn.cxy.date3;import java.util.Calendar; import java.util.Scanner;/*本類用于日歷類的鞏固練習(xí)* 需求:獲取任意一年的2月有多少天*/ public class TestFeb {public static void main(String[] args) {//1.提示并接收用戶要測(cè)試的年份:System.out.println("請(qǐng)您輸入要查詢的年份:");int year = new Scanner(System.in).nextInt();//2.獲取日歷類對(duì)象,并將時(shí)間設(shè)置為用戶輸入那年的3月1日Calendar c = Calendar.getInstance();c.set(year, 2, 1);//3.三月一日往前推一天就是2月的最后一天c.add(Calendar.DATE, -1);//4.獲取這一天輸出即可int date = c.get(Calendar.DATE);System.out.println(year + "年的2月有" + date + "天");} }

總結(jié)

以上是生活随笔為你收集整理的新手小白学JAVA 日期类Date SimpleDateFormat Calendar的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。