欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java日期相關(guān)API的基本操作總結(jié)

 更新時(shí)間:2022年11月19日 14:09:09   作者:館主阿牛  
大概總結(jié)一下日期相關(guān)API操作原因是對(duì)于日期的操作我們開發(fā)中還是很常見的,包括在數(shù)據(jù)庫中保存日期,以及之前String類中對(duì)字符串的一些處理開發(fā)中都很常見,希望對(duì)大家有所幫助

前言

想大概總結(jié)一下日期相關(guān)API操作原因是對(duì)于日期的操作我們開發(fā)中還是很常見的,包括在數(shù)據(jù)庫中保存日期,包括之前String類中對(duì)字符串的一些處理開發(fā)中都很常見,但大多和javascript以及python中的相關(guān)API一致我就沒總結(jié),對(duì)于日期這塊今天還是大概總結(jié)一下吧!

JDK8之前

Date對(duì)象的使用

對(duì)于這個(gè)對(duì)象,現(xiàn)在他的許多方法已經(jīng)過時(shí)了,我們只需要記住他的兩個(gè)構(gòu)造器以及兩個(gè)方法的使用就行!

那么接下來在案例中看看這兩個(gè)構(gòu)造器的使用以及兩個(gè)方法的使用:

public class Demo {
    public static void main(String[] args) {
        Date date1 = new Date();//構(gòu)造器一 :創(chuàng)建一個(gè)對(duì)應(yīng)當(dāng)前日期的對(duì)象
        System.out.println(date1.toString()); //方法一:輸出當(dāng)前日期
        System.out.println(date1.getTime());  //方法二:輸出當(dāng)前日期對(duì)應(yīng)的時(shí)間戳

        Date date2 = new Date(1668749175853L); //構(gòu)造器二:創(chuàng)建指定毫秒數(shù)的Date對(duì)象
        System.out.println(date2);
    }
}

但其實(shí)這里的Date有兩個(gè),這個(gè)需要我們注意:

一個(gè)是java.util.Date,另一個(gè)是他的子類java.sql.Date。第二個(gè)很明顯是和我們的數(shù)據(jù)庫有關(guān)的,數(shù)據(jù)庫中保存日期則需要轉(zhuǎn)換為java.sql.Date類型!

因此,java.util.Date和子類java.sql.Date之間的轉(zhuǎn)換我們也要了解一下!

java.sql.Date 轉(zhuǎn)換為 java.util.Date

這個(gè)很簡(jiǎn)單,由于 java.sql.Date是java.util.Date的子類,因此java.sql.Date轉(zhuǎn)換為java.util.Date只需要進(jìn)行對(duì)象的上轉(zhuǎn)型操作:

java.util.Date date3 = new java.sql.Date(1668749175853L);
System.out.println(date3);

當(dāng)然也是可以像下面的用getTime()方法轉(zhuǎn)換成時(shí)間戳,然后用構(gòu)造器最后完成轉(zhuǎn)換!

java.util.Date 轉(zhuǎn)換為 java.sql.Date

方式一:和多態(tài)有關(guān),還是有局限性!

java.util.Date date3 = new java.sql.Date(1668749175853L); //上轉(zhuǎn)型
java.sql.Date data4 = (java.sql.Date)date3; //下轉(zhuǎn)型

方式二:我們常用的

Date date5 = new Date();
java.sql.Date date6 = new java.sql.Date(date5.getTime());
System.out.println(date6);//只會(huì)輸出年月日

需要注意的是java.sql.Date只會(huì)輸出年月日

格式化日期SimpleDateFormat類的使用

上面Date類的輸出格式不夠國際化看,對(duì)于我們來說看著不順,因此,還需要格式化成我們需要的格式。

package 日期;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        SimpleDateFormat sdf =  new SimpleDateFormat(); //使用默認(rèn)的構(gòu)造器

        //格式化:日期 -》字符串
        Date date = new Date();
        String str = sdf.format(date);
        System.out.println(str);

        //解析:字符串 —》日期
        String str2 = "2022/11/18 下午2:30";
        Date date2 = null;
        try {
            date2  = sdf.parse(str2);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(date2);
    }
}

這個(gè)是默認(rèn)的格式化!

下面寫我們常用的格式化:

package 日期;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        SimpleDateFormat sdf =  new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        //格式化:日期 -》字符串
        Date date = new Date();
        String str = sdf.format(date);
        System.out.println(str);

        //解析:字符串 —》日期
        String str2 = "2022-11-18 02:37:06";
        Date date2 = null;
        try {
            date2  = sdf.parse(str2);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(date2);
    }
}

JDK8之后

之前說過,jdk8之前的Date大多說構(gòu)造器已經(jīng)過時(shí)了,因?yàn)槟男?gòu)造器使用時(shí)有偏移量,需要注意。

JDK 1.0中包含了一個(gè) java.util.Date 類,但是它的大多數(shù)方法已經(jīng)在 JDK 1.1引入 Calendar 類之后被棄用了。而 Calendar 并不比 Date 好多少。它們面臨的問題是:

  • 可變性:像日期和時(shí)間這樣的類應(yīng)該是不可變的。
  • 偏移性:Date 中的年份是從1900開始的,而月份都從0開始。
  • 格式化只對(duì) Date 有用, Calendar 則不行。
  • 此外,它們也不是線程安全的;不能處理閏秒等。

LocalDate 、LocalTime 、LocalDateTime的使用

LocalDate 、LocalTime 、LocalDateTime類是其中較重要的幾個(gè)類,它們的實(shí)例是不可變的對(duì)象,分別表示使用 ISO -8601日歷系統(tǒng)的日期、時(shí)間、日期和時(shí)間。它們提供了簡(jiǎn)單的本地日期或時(shí)間,并不包含當(dāng)前的時(shí)間信息,也不包含與時(shí)區(qū)相關(guān)的信息。下面通過小案例大概看看:

package 日期;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class Demo2 {
    public static void main(String[] args) {
        //now() 獲取當(dāng)前的日期,時(shí)間,時(shí)間+日期
        LocalDate localDate = LocalDate.now();
        LocalTime localTime = LocalTime.now();
        LocalDateTime localDateTime = LocalDateTime.now();

        System.out.println(localDate);
        System.out.println(localTime);
        System.out.println(localDateTime);

        System.out.println("---------------------");

        //of() 設(shè)置指定的年月日時(shí)分秒,沒有偏移量
        LocalDateTime localDateTime1 = LocalDateTime.of(2022,10,1,12,12,43);
        System.out.println(localDateTime1);

        System.out.println("---------------------");

        //getXxx() 獲取指定的年 月 周等等
        LocalDateTime localDateTime2 = LocalDateTime.now();
        System.out.println(localDateTime2.getMonth());
        System.out.println(localDateTime2.getHour());

        System.out.println("---------------------");

        //withXxx() 設(shè)置改變一些時(shí)間的值,能體現(xiàn)不可變性,方法返回值是改變后的
        LocalDateTime localDateTime3 = LocalDateTime.now();
        LocalDateTime localDateTime4 = localDateTime3.withHour(5);
        System.out.println(localDateTime3);
        System.out.println(localDateTime4);
    }
}

格式化日期 DateTimeFormatter 類的使用

關(guān)于這個(gè)類,我只寫一下自定義格式化日期,這一點(diǎn)和SimpleDateFormat類的使用沒啥區(qū)別:

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化:
String str = dateTimeFormatter.format(LocalDateTime.now());
System.out.println(str);
//解析
TemporalAccessor parse = dateTimeFormatter.parse("2022-10-01 12:12:43");
System.out.println(parse);

結(jié)語

當(dāng)然,jdk8之前還有一個(gè)Calendar日歷類的使用,感興趣的可以去看看!

到此這篇關(guān)于Java日期相關(guān)API的基本操作總結(jié)的文章就介紹到這了,更多相關(guān)Java日期API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java8深入學(xué)習(xí)之熟透Optional

    Java8深入學(xué)習(xí)之熟透Optional

    這篇文章主要給大家介紹了關(guān)于Java8深入學(xué)習(xí)之熟透Optional的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Mybatis-plus如何提前獲取實(shí)體類用雪花算法生成的ID

    Mybatis-plus如何提前獲取實(shí)體類用雪花算法生成的ID

    本文主要介紹了Mybatis-plus如何提前獲取實(shí)體類用雪花算法生成的ID,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringBoot綠葉顯示yml和端口問題及解決方法

    SpringBoot綠葉顯示yml和端口問題及解決方法

    今天是解決報(bào)錯(cuò)的一天,首先在操作Springboot中的時(shí)候,有些朋友的yml顯示的不是綠葉的圖標(biāo),或者是配置了之后不生效的問題,今天就給大家分享SpringBoot綠葉顯示yml和端口問題,感興趣的朋友一起看看吧
    2023-01-01
  • Java中的@SneakyThrows注解詳解

    Java中的@SneakyThrows注解詳解

    這篇文章主要介紹了Java中的@SneakyThrows注解詳解,@SneakyThrows將當(dāng)前方法拋出的異常,包裝成RuntimeException,騙過編譯器,使得調(diào)用點(diǎn)可以不用顯示處理異常信息,需要的朋友可以參考下
    2023-10-10
  • 深入剖析java中String、StringBuffer、StringBuilder的區(qū)別

    深入剖析java中String、StringBuffer、StringBuilder的區(qū)別

    下面小編就為大家?guī)硪黄钊肫饰鰆ava中String、StringBuffer、StringBuilder的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • Java詳解使用線程池處理任務(wù)方法

    Java詳解使用線程池處理任務(wù)方法

    java中經(jīng)常需要用到多線程來處理,我們非常不建議單純使用繼承Thread或者實(shí)現(xiàn)Runnable接口的方式來創(chuàng)建線程,那樣勢(shì)必有創(chuàng)建及銷毀線程耗費(fèi)資源、線程上下文切換問題。同時(shí)創(chuàng)建過多的線程也可能引發(fā)資源耗盡的風(fēng)險(xiǎn),這個(gè)時(shí)候引入線程池比較合理,方便線程任務(wù)的管理
    2022-05-05
  • Spring Data JPA開啟批量更新時(shí)樂觀鎖失效問題的解決方法

    Spring Data JPA開啟批量更新時(shí)樂觀鎖失效問題的解決方法

    樂觀鎖的基本思想是,認(rèn)為在大多數(shù)情況下,數(shù)據(jù)訪問不會(huì)導(dǎo)致沖突,因此,樂觀鎖允許多個(gè)事務(wù)同時(shí)讀取和修改相同的數(shù)據(jù),而不進(jìn)行顯式的鎖定,本文給大家介紹了Spring Data JPA開啟批量更新時(shí)樂觀鎖失效問題的解決方法,需要的朋友可以參考下
    2024-07-07
  • Java方法及數(shù)組相關(guān)原理解析

    Java方法及數(shù)組相關(guān)原理解析

    這篇文章主要介紹了Java方法及數(shù)組相關(guān)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java接入支付寶授權(quán)第三方登錄的完整步驟

    Java接入支付寶授權(quán)第三方登錄的完整步驟

    不管是支付寶支付,還是微信支付,還是銀聯(lián)支付等,大部分的支付流程都是相似的,這篇文章主要給大家介紹了關(guān)于Java接入支付寶授權(quán)第三方登錄的相關(guān)資料,使用支付寶的沙盒環(huán)境示例,需要的朋友可以參考下
    2021-07-07
  • SWT(JFace)體驗(yàn)之Icon任我變

    SWT(JFace)體驗(yàn)之Icon任我變

    SWT(JFace)體驗(yàn)之Icon任我變
    2009-06-06

最新評(píng)論