一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 新手小白學JAVA 日期類Date SimpleDateFormat Calendar(入門)

新手小白學JAVA 日期類Date SimpleDateFormat Calendar(入門)

2022-01-25 01:04程序媛 泡泡 Java教程

本文主要介紹了JAVA 日期類Date SimpleDateFormat Calendar,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1. Date日期類

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

1.1 Date的構造函數

Date() 分配一個 Date 對象,以表示分配它的時間(精確到毫秒)
Date(long date) 分配一個 Date 對象,表示自從標準基準時間起指定時間的毫秒數
標準基準時間:稱為“歷元(epoch)”,即 1970 年 1 月 1 日 00:00:00

1.2 Date的構造函數練習

創建包:cn.cxy.date
創建類:TestDate1

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package cn.cxy.date;
 
import java.util.Date;
 
/*本類用于Date的入門*/
public class TestDate1 {
    public static void main(String[] args) {
        //1.利用無參構造創建Date類對象,注意導包:import java.util.Date;
        Date d1= new Date();
        System.out.println(d1);//Thu Sep 23 23:14:59 CST 2021
 
        //2.利用含參構造創建Date對象
        long t = 1000*60*60;//1000ms*60*60->1min*60->1h
        Date d2 = new Date(t);//從標準基礎時間1970-1-1-00:00開始往后數1h
        System.out.println(d2);//Thu Jan 01 09:00:00 CST 1970
        //CST是中國時區,所以額外加了8h變成了09:00:00
    }
}

常用時間縮寫
GMT 格林尼治時間 = UTC 協調世界時間
UTC + 時區差 = 本地時間,我們是在東八區,東加西減,所以
CST 中國標準時間:China Standard Time UT+8:00

1.3 Date的常用方法練習

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

創建包:cn.cxy.date
創建類:TestDate2

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package cn.cxy.date;
 
import java.util.Date;
 
/*本類用于Date的常用方法測試*/
public class TestDate2 {
    public static void main(String[] args) {
        //1.創建Date對象
        Date d1 = new Date();
        //2.獲取從標準基準時間到現在時間的毫秒值,是一個時間差
        System.out.println(d1.getTime());//1632404114206
        //*1.0是為了變成浮點型,/1000變成秒,/60變成分,/60變成小時,/24變成天,/365變成年
        System.out.println(d1.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365);//約等于51,從1970到2021
 
        //3.打印d1就是當前的時間
        System.out.println(d1);//Thu Sep 23 21:39:29 CST 2021
        //4設置一個long值,作為毫秒為單位的時間差
        long t = 1000*60*60;
        d1.setTime(t);
        System.out.println(d1);//打印的就是從標準基準時間經過時間差t的時間
    }
}

2. SimpleDateFormat

SimpleDateFormat 常用于格式化和解析日期
日期和時間格式由日期和時間模式字符串指定,字母與日期時間的對應關系如下:

新手小白學JAVA 日期類Date SimpleDateFormat Calendar(入門)

2.1 常用構造函數

SimpleDateFormat() 用默認模式的日期格式構造 SimpleDateFormat
SimpleDateFormat(String pattern) 用給定模式的日期格式構造 SimpleDateFormat

2.2 日期轉換格式工具類練習

創建包:cn.cxy.date
創建類:TestSDF.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package cn.cxy.date;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/*本類用于測試SimpleDateFormat類*/
public class TestSDF {
    public static void main(String[] args) throws ParseException {
        /*01 格式化:從 Date 到 String*/
        //1.創建日期類對象,包含當前的時間
        Date d = new Date();
        //2.創建日期轉換工具類的對象,此時使用的是無參構造
        //SimpleDateFormat sdf = new SimpleDateFormat();
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        //3.通過剛剛創建好的工具類對象轉換日期的格式
        String s = sdf2.format(d);
        //4.打印轉換好的時間字符串:
        //默認時間格式:21-9-23 下午11:18
        //自定義時間格式:2021/09/23 10:21:39
        System.out.println(s);
        
        /*解析:從String到 Date*/
        //1.定義一個時間字符串
        String s2 = "2021/9/23 22:24:03";
        //報錯:ParseException解析異常: Unparseable date不可分割日期: "2021/9/23 22:24:03"
        //SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
        //2.利用含參構造創建工具類對象,指定格式,注意必須是規定格式,否則會拋出異常
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        //3.利用工具類對象對日期進行轉換
        Date d2= sdf3.parse(s2);
        //4.打印轉換好的日期
        System.out.println(d2);//Thu Sep 23 22:24:03 CST 2021
 
    }
}

2.3 日期轉換綜合練習

創建包:cn.cxy.date2
創建工具類:DateUtils.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package cn.cxy.date2;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
/*本類用作日期類的工具類,一般工具類的要求:
* 構造方法私有化 & 成員方法靜態化*/
public class DateUtils {
    //1.創建一個私有化的構造方法
    private DateUtils(){}
 
    //2.創建一個將日期轉換為字符串的方法
    //參數:日期對象Date  日期轉換的格式:format 返回值類型:String
    public static String dateToString(Date date, String format){
        //1.通過傳入的日期格式,創建指定的工具類對象
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //2.通過工具類對象將字符串轉換為對應的日期字符串,并拿到轉換后的字符串結果
        String s = sdf.format(date);/*轉換*/
        //3.將最終轉換的字符串結果返回
        return s;
    }
 
    //3.創建一個將字符串轉換為日期的方法
    //參數:字符串對象String  日期轉換的格式:format 返回值類型:Date
    public static Date stringToDate(String s, String format) throws ParseException {
        //1.通過傳入的日期格式,創建指定的工具類對象
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        //2.通過工具類對象將日期對象轉換為對應的字符串,并拿到轉換后的日期對象
        Date d = sdf.parse(s);/*解析*/
        //3.將最終轉換的日期對象作為方法的結果返回
        return d;
    }
}

創建包:cn.cxy.date2
創建測試類:TestDate.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package cn.cxy.date2;
 
import java.text.ParseException;
import java.util.Date;
 
/*本類用于自定義日期工具類的測試類*/
public class TestDate {
    public static void main(String[] args) throws ParseException {
        //1.創建日期類對象
        Date d = new Date();
        //2.調用自定義日期工具類的功能:將日期對象轉換成字符串
        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:32
        System.out.println(s2);//2021年09月23日
        System.out.println(s3);//10:58:21
 
        //3.調用自定義工具類的功能,將字符串轉換為對應的日期對象
        //注意,此處的format格式必須與s字符串定義時的格式一致!!!否則轉換會報錯!
        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 類是一個抽象類,不可直接實例化,但是它有一個直接已知子類GregorianCalendar
它為特定瞬間與還有比如年月日等日歷字段之間的轉換和操作提供了一些方法

3.2 常用方法

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

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

3.3 入門案例

創建包:cn.cxy.date3
創建類:TestCalendar.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package cn.cxy.date3;
 
import org.junit.Test;
 
import java.util.Calendar;
 
/*本類用于練習日歷類*/
public class TestCalendar {
    @Test
    public void TestGet(){
        //1.獲取日歷對象
        Calendar c = Calendar.getInstance();
        System.out.println(c);//能獲取很多信息,比如MONTH=8,我們現在是9月,說明月份是從0開始的
        //2.通過獲取到的日歷對象,調用get(),傳入對應的日歷字段,就可以拿到對應的值
        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日
    }
    @Test
    public void TestAdd1(){
        //1.獲取日歷對象
        Calendar c = Calendar.getInstance();
        //2.給指定的日歷字段進行指定數目的加減操作,得到10年后的今天
        c.add(Calendar.YEAR,+10);
 
        //3.通過獲取到的日歷對象,調用get(),傳入對應的日歷字段,就可以拿到對應的值
        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 + "日");
    }
 
    @Test
    public void TestAdd2(){//需求:打印1年后的7天后
        //1.獲取日歷對象
        Calendar c = Calendar.getInstance();
        //2.給指定的日歷字段進行指定數目的加減操作,得到10年后的今天
        c.add(Calendar.YEAR,+1);
        c.add(Calendar.DAY_OF_MONTH,+7);
 
        //3.通過獲取到的日歷對象,調用get(),傳入對應的日歷字段,就可以拿到對應的值
        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 + "日");
    }
 
    @Test
    public void TestSet(){
        //1.獲取日歷對象
        Calendar c = Calendar.getInstance();
        //2.測試set方法
        c.set(2099,9,1);
        //3.通過獲取到的日歷對象,調用get(),傳入對應的日歷字段,就可以拿到對應的值
        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 鞏固案例

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package cn.cxy.date3;
 
import java.util.Calendar;
import java.util.Scanner;
 
/*本類用于日歷類的鞏固練習
 * 需求:獲取任意一年的2月有多少天*/
public class TestFeb {
    public static void main(String[] args) {
        //1.提示并接收用戶要測試的年份:
        System.out.println("請您輸入要查詢的年份:");
        int year = new Scanner(System.in).nextInt();
        //2.獲取日歷類對象,并將時間設置為用戶輸入那年的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 + "天");
    }
}

到此這篇關于新手小白學JAVA 日期類Date SimpleDateFormat Calendar(入門)的文章就介紹到這了,更多相關JAVA Date SimpleDateFormat Calendar內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_43884234/article/details/120443457

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
主站蜘蛛池模板: 男人曰女人 | 久久视热频国产这里只有精品23 | 国产91免费 | 国产乱子伦在线观看不卡 | 国产精品吹潮香蕉在线观看 | 国产真实乱子伦xxxxchina | 国产成人亚洲精品91专区高清 | 四虎影院永久网址 | 亚洲精品色婷婷在线影院麻豆 | 国产美女下面流出白浆视频 | 国产精品免费 | 亚洲日韩精品欧美一区二区 | 新版孕妇bbwbbwbbw | 99热视| 日韩一卡2卡3卡新区网站 | 天堂樱桃bt在线www | 男生和女生搞逼逼 | 沉香如屑西瓜视频免费观看完整版 | 青青草高清视频 | 亚洲成色爱我久久 | 欧美成人aaaa免费高清 | 波多野结衣之双方调教在线观看 | 91sao在线看片水片 | 日本黄a三级三级三级 | 114毛片免费观看网站 | 国产精品一区二区国产 | 草溜短视频| haodiaose在线精品免费视频 | 9420高清完整版在线观看国语 | 爱欲荡漾在线观看 | 欧美在线视频免费播放 | 欧美一区二区三区在线观看免费 | 乌克兰成人性色生活片 | 免费的强动漫人物 | 美女撒尿部位无遮挡 | 日本一道一区二区免费看 | 国产精品视频播放 | gayxxx视频| 精品国产区一区二区三区在线观看 | 日韩欧美亚洲每日更新网 | 99pao在线视频精品免费 |