国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java高級(jí)語法】(十九)日期時(shí)間處理類:還在用又老又舊的Date、Calendar嗎?看我狂敲三萬字!為你全面解析 LocalDateTime、DateTimeFormatter ~

這篇具有很好參考價(jià)值的文章主要介紹了【Java高級(jí)語法】(十九)日期時(shí)間處理類:還在用又老又舊的Date、Calendar嗎?看我狂敲三萬字!為你全面解析 LocalDateTime、DateTimeFormatter ~。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【Java高級(jí)語法】(十九)日期時(shí)間處理類:還在用又老又舊的Date、Calendar嗎?看我狂敲三萬字!為你全面解析 LocalDateTime、DateTimeFormatter ~,Java,java,jvm,開發(fā)語言,經(jīng)驗(yàn)分享,電腦,后端,java-ee

1?? 概念

Java的時(shí)間處理相關(guān)類主要是為了提供靈活、可靠地處理日期和時(shí)間的能力,以滿足各種應(yīng)用程序中對(duì)時(shí)間的需求。這些類旨在簡(jiǎn)化日期和時(shí)間的操作,并提供一致的方法和功能來處理時(shí)間上的計(jì)算、格式化和解析。

?? 時(shí)間日期及處理類匯總

將Java中所有用于表示日期時(shí)間的類匯總,羅列如下表:

類名 說明
java.util.Date 提供了日期和時(shí)間的基本功能。它表示一個(gè)特定的瞬時(shí)時(shí)間點(diǎn),但不包含時(shí)區(qū)信息
java.util.Calendar 為操作日期和時(shí)間提供了更高級(jí)別的功能,包括日期的計(jì)算和格式化。
它支持時(shí)區(qū),并且可以進(jìn)行日期和時(shí)間的加減運(yùn)算
java.util.GregorianCalendar 此類是Calendar的子類,它實(shí)現(xiàn)了公歷日歷系統(tǒng),支持閏年等功能
java.time.LocalDate Java 8引入的新類,表示不含時(shí)間的日期(年、月、日),并且支持大部分常見的日期操作
java.time.LocalTime Java 8引入的新類,用于表示不含日期的時(shí)間(小時(shí)、分鐘、秒),并且支持時(shí)間的各種運(yùn)算
java.time.LocalDateTime 此類是LocalDateLocalTime的組合,用于表示帶日期和時(shí)間的對(duì)象
java.time.ZonedDateTime 表示帶時(shí)區(qū)的日期和時(shí)間,可以指定不同的時(shí)區(qū)
java.time.Duration 用于表示時(shí)間間隔的持續(xù)時(shí)間,精確到小時(shí)、分鐘等單位
java.time.Period 用于表示日期間隔的周期,精確到年、月、日等單位

以上這些類都是Java標(biāo)準(zhǔn)庫中常用的時(shí)間處理類,根據(jù)具體的需求和場(chǎng)景選擇合適的類進(jìn)行使用。Java 8引入的java.time包更加推薦,提供了更多功能強(qiáng)大且易于使用的日期和時(shí)間處理功能。

將日期時(shí)間相關(guān)處理操作的類匯總,羅列如下表:

類名 說明
java.text.DateFormat 這個(gè)抽象類是日期時(shí)間格式化的基礎(chǔ)。它提供了將日期時(shí)間轉(zhuǎn)換為字符串以及將字符串解析為日期時(shí)間的方法
java.text.SimpleDateFormat DateFormat的具體實(shí)現(xiàn)類,它可以按照指定的模式將日期時(shí)間格式化為字符串,也可以將字符串解析為日期時(shí)間
java.time.format.DateTimeFormatter Java 8引入的新類,用于格式化和解析日期時(shí)間對(duì)象。它提供了豐富的模式和選項(xiàng),以便更靈活地處理不同的日期時(shí)間格式
java.util.Formatter 這個(gè)類使用格式化字符串和參數(shù),類似于C語言中的printf函數(shù)。它可以在輸出中插入日期時(shí)間,并根據(jù)需要進(jìn)行格式化
java.time.format.FormatStyle 這個(gè)枚舉類提供了一些預(yù)定義的日期、時(shí)間和日期時(shí)間格式的樣式,例如SHORT、MEDIUM、LONG和FULL

以上這些類都提供了豐富的日期時(shí)間格式處理功能,可以根據(jù)需求選擇適合的類來處理日期和時(shí)間的格式化和解析操作。其中,Java 8引入的 DateTimeFormatter 是推薦使用的方法,因?yàn)樗峁┝烁嗟倪x項(xiàng)和靈活性。

在本文中,主要介紹最常用的DateCalendar、SimpleDateFormat 、LocalDateTime、DateTimeFormatter等類的使用及操作方式等相關(guān)知識(shí)。而其他類的詳細(xì)操作方法API等信息,由于篇幅原因本文不再做更多介紹,感興趣的朋友可私信我一起交流。

  • Date 類:Java 中最基本的日期和時(shí)間處理類。它表示一個(gè)特定的時(shí)間點(diǎn),以毫秒為單位存儲(chǔ)。Date 類有一些基本的方法用于獲取、設(shè)置日期和時(shí)間,但它在處理日期和時(shí)間方面存在一些缺陷和限制;

  • Calendar 類:用于表示日歷系統(tǒng)。它提供了一些方法來操作日期和時(shí)間,如獲取年、月、日、時(shí)、分、秒等。Calendar 可以將日期和時(shí)間字段進(jìn)行修改,并支持國(guó)際化和本地化的日期和時(shí)間顯示;

  • SimpleDateFormat 類:用于格式化和解析日期和時(shí)間的類??梢酝ㄟ^指定模式將 Date 對(duì)象格式化為字符串,也可以將字符串解析為 Date 對(duì)象;

  • LocalDateTime:Java 8 中的一個(gè)類,表示了一個(gè)不受時(shí)區(qū)影響的日期時(shí)間對(duì)象。它將日期和時(shí)間組合在一起,可以精確表示到納秒級(jí)別。相比于傳統(tǒng)的Date類,LocalDateTime提供了更多的操作方法和功能。
    使用LocalDateTime類可以進(jìn)行各種日期和時(shí)間相關(guān)的操作,例如計(jì)算、比較、格式化等。它提供了更直觀、簡(jiǎn)潔和安全的方式來處理日期和時(shí)間,避免了以前的一些問題和陷阱,并使開發(fā)者能夠更輕松地編寫健壯和可維護(hù)的代碼。

  • DateTimeFormatter:Java 8 中的一個(gè)類,它提供了日期和時(shí)間對(duì)象的格式化和解析功能,用于將日期和時(shí)間對(duì)象轉(zhuǎn)換為字符串或從字符串解析成日期和時(shí)間對(duì)象。
    它的設(shè)計(jì)目的是為了彌補(bǔ)舊的日期和時(shí)間相關(guān)類(如SimpleDateFormat)在線程安全性、易用性和靈活性方面的不足。同時(shí),它引入了新的日期和時(shí)間類(例如LocalDate、LocalTime、ZonedDateTime等),結(jié)合了DateTimeFormatter的強(qiáng)大功能,使得處理日期和時(shí)間的代碼更加簡(jiǎn)潔和可讀,并且適合在多線程環(huán)境下使用。

2?? 優(yōu)勢(shì)和缺點(diǎn)

  1. Date
  • 優(yōu)點(diǎn):簡(jiǎn)單易懂,可以直接進(jìn)行日期和時(shí)間操作;
  • 缺點(diǎn):不夠靈活,實(shí)現(xiàn)上存在線程安全問題;
  1. SimpleDateFormat
  • 優(yōu)點(diǎn):可以根據(jù)指定模式對(duì)日期和時(shí)間進(jìn)行格式化和解析;
  • 缺點(diǎn):在多線程環(huán)境下不安全
  1. Calendar
  • 優(yōu)點(diǎn):可以處理更復(fù)雜的日期和時(shí)間操作,提供了豐富的方法和功能;
  • 缺點(diǎn):使用起來較為繁瑣,并且性能較差

4. DateTimeFormatter

  • 優(yōu)點(diǎn):
    • 可擴(kuò)展性:支持自定義的模式符號(hào),使開發(fā)人員能夠創(chuàng)建特定于項(xiàng)目或領(lǐng)域的日期時(shí)間格式;
    • 線程安全:線程安全的,可以在多個(gè)線程之間共享和重復(fù)使用;
    • 預(yù)定義模式:包含許多預(yù)定義的日期時(shí)間格式模式,例如ISO_LOCAL_DATEISO_OFFSET_DATE_TIME等,這些模式可直接使用;
    • 方法豐富:提供了各種方法來處理日期時(shí)間對(duì)象的格式化、解析、校驗(yàn)和轉(zhuǎn)換。
  • 缺點(diǎn):
    • 學(xué)習(xí)曲線:提供了廣泛而靈活的選項(xiàng),這使得學(xué)習(xí)和理解如何使用它可能需要一些時(shí)間和努力。

5. LocalDateTime

  • 優(yōu)點(diǎn):
    • 不受時(shí)區(qū)限制:表示本地日期和時(shí)間,不受特定時(shí)區(qū)的影響。這使得它更適合處理與時(shí)區(qū)無關(guān)的日期和時(shí)間操作;
    • 不可變性和線程安全性LocalDateTime是不可變的,任何操作都會(huì)返回一個(gè)新的實(shí)例。這保證了多線程環(huán)境下的安全性,并減少了由于修改實(shí)例而引起的潛在問題;
    • 解析和格式化:可以使用DateTimeFormatter類將其轉(zhuǎn)換為字符串形式,并從字符串解析為LocalDateTime。這使得數(shù)據(jù)的輸入和輸出變得非常方便;
    • 操作豐富:提供了一系列的方法來進(jìn)行日期和時(shí)間的增減、比較、格式化、計(jì)算等操作。這使得在處理日期和時(shí)間上的常見需求時(shí)變得更加便捷。
  • 缺點(diǎn):
    • 缺乏時(shí)區(qū)信息:由于LocalDateTime類不包含時(shí)區(qū)信息,因此在處理需要考慮時(shí)區(qū)的應(yīng)用程序中可能不夠適用。如果需要處理跨時(shí)區(qū)的日期和時(shí)間,建議使用ZonedDateTime或其他相關(guān)類。

3?? 使用

3.1 各時(shí)間日期類使用案例

下面是一個(gè)Java案例程序,演示如何使用上文各個(gè)日期和時(shí)間相關(guān)類以及對(duì)它們的一些簡(jiǎn)單解釋說明:

import java.util.Date;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.Duration;
import java.time.Period;

public class DateTimeExample {
    public static void main(String[] args) {
        // 使用java.util.Date獲取當(dāng)前日期和時(shí)間
        Date currentDate = new Date();
        System.out.println("當(dāng)前日期和時(shí)間: " + currentDate);

        // 使用java.util.Calendar獲取當(dāng)前日期
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;  // 注意:Calendar中月份是從0開始計(jì)數(shù)的,所以需要加1
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("當(dāng)前日期: " + year + "-" + month + "-" + dayOfMonth);

        // 使用java.util.GregorianCalendar創(chuàng)建指定日期和時(shí)間的對(duì)象
        GregorianCalendar gregorianCalendar = new GregorianCalendar(2022, 0, 1, 12, 30, 0);  // 2022年1月1日 12:30:00
        Date specificDate = gregorianCalendar.getTime();
        System.out.println("指定日期和時(shí)間: " + specificDate);

        // 使用java.time.LocalDate獲取當(dāng)前日期
        LocalDate localDate = LocalDate.now();
        System.out.println("當(dāng)前日期: " + localDate);

        // 使用java.time.LocalTime獲取當(dāng)前時(shí)間
        LocalTime localTime = LocalTime.now();
        System.out.println("當(dāng)前時(shí)間: " + localTime);

        // 使用java.time.LocalDateTime獲取當(dāng)前日期和時(shí)間
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("當(dāng)前日期和時(shí)間: " + localDateTime);

        // 使用java.time.ZonedDateTime獲取帶時(shí)區(qū)的日期和時(shí)間
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println("當(dāng)前帶時(shí)區(qū)的日期和時(shí)間: " + zonedDateTime);

        // 使用java.time.Duration計(jì)算時(shí)間間隔
        Duration duration = Duration.between(localTime, LocalTime.of(14, 30));
        long hours = duration.toHours();
        long minutes = duration.toMinutes() % 60;
        System.out.println("當(dāng)前時(shí)間與今天14:30之間的時(shí)間間隔: " + hours + "小時(shí)" + minutes + "分鐘");

        // 使用java.time.Period計(jì)算日期間隔
        Period period = Period.between(localDate, LocalDate.of(2023, 12, 31));
        int years = period.getYears();
        int months = period.getMonths();
        int days = period.getDays();
        System.out.println("當(dāng)前日期與2023年12月31日之間的日期間隔: " + years + "年" + months + "月" + days + "日");
    }
}

以上的案例程序演示了如何使用這些類來獲取當(dāng)前日期和時(shí)間、創(chuàng)建特定的日期和時(shí)間對(duì)象,以及計(jì)算日期和時(shí)間之間的間隔。

運(yùn)行結(jié)果如下:

當(dāng)前日期和時(shí)間: Mon Jun 26 17:26:27 CST 2023
當(dāng)前日期: 2023-6-26
指定日期和時(shí)間: Sat Jan 01 12:30:00 CST 2022
當(dāng)前日期: 2023-06-26
當(dāng)前時(shí)間: 17:26:28.114
當(dāng)前日期和時(shí)間: 2023-06-26T17:26:28.114
當(dāng)前帶時(shí)區(qū)的日期和時(shí)間: 2023-06-26T17:26:28.122+08:00[Asia/Shanghai]
當(dāng)前時(shí)間與今天14:30之間的時(shí)間間隔: -2小時(shí)-56分鐘
當(dāng)前日期與2023年12月31日之間的日期間隔: 0年6月5日

3.2 各時(shí)間日期處理類使用案例

下面是一個(gè)Java案例程序,演示如何使用上文各個(gè)日期和時(shí)間相關(guān)處理操作類以及對(duì)它們的一些簡(jiǎn)單解釋說明:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Date;
import java.util.Formatter;
import java.util.Locale;

public class FormattingExample {
    public static void main(String[] args) {
        Date date = new Date();
        // 使用 java.text.DateFormat 格式化日期和時(shí)間
        DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, Locale.US);
        String formattedDate = dateFormat.format(date);
        System.out.println("格式化的日期:" + formattedDate);

        // 使用 java.text.SimpleDateFormat 自定義日期和時(shí)間格式化
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = simpleDateFormat.format(date);
        System.out.println("自定義格式化的日期和時(shí)間:" + formattedDateTime);

        // 使用 java.time.format.DateTimeFormatter 格式化日期和時(shí)間
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedLocalDateTime = LocalDateTime.now().format(dateTimeFormatter);
        System.out.println("使用 DateTimeFormatter 格式化的當(dāng)前日期和時(shí)間:" + formattedLocalDateTime);

        // 使用 java.util.Formatter 進(jìn)行格式化
        Formatter formatter = new Formatter();
        String formattedString = formatter.format("Hello, %s! Today is %tF.", "John", date).toString();
        System.out.println("使用 Formatter 進(jìn)行格式化:" + formattedString);
        formatter.close();

        // 使用 java.time.format.FormatStyle 定義預(yù)定義的格式風(fēng)格
        String formattedStyleDateTime = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(LocalDateTime.now());
        System.out.println("使用 FormatStyle 定義的格式風(fēng)格:" + formattedStyleDateTime);
    }
}

上述案例程序演示了如何使用這些類和方法來格式化日期和時(shí)間,包括使用預(yù)定義風(fēng)格、自定義格式化模式等。運(yùn)行結(jié)果如下:

格式化的日期:June 26, 2023
自定義格式化的日期和時(shí)間:2023-06-26 17:40:52
使用 DateTimeFormatter 格式化的當(dāng)前日期和時(shí)間:2023-06-26 17:40:53
使用 Formatter 進(jìn)行格式化:Hello, John! Today is 2023-06-26.
使用 FormatStyle 定義的格式風(fēng)格:2023-6-26 17:40:53

3.3 Date 類

Java的Date類是一個(gè)用于處理日期和時(shí)間的基本類,它提供了一系列方法來操縱和顯示日期、時(shí)間和相關(guān)信息。下面是Java Date類的全部操作方法API:

類型 方法 說明
構(gòu)造函數(shù) Date() 使用當(dāng)前系統(tǒng)日期和時(shí)間創(chuàng)建一個(gè)Date對(duì)象
Date(long date) 使用給定的毫秒數(shù)從1970年1月1日開始創(chuàng)建一個(gè)Date對(duì)象
獲取日期和時(shí)間信息 getTime() 返回自 1970 年 1 月 1 日至當(dāng)前時(shí)間的毫秒數(shù)差值
getYear() 獲取表示年份的值(從1900開始),已廢棄(deprecated)
getMonth() 獲取表示月份的值(范圍為0-11)
getDate() 獲取表示日期的值
getDay() 獲取表示星期幾的值(范圍為0-6,其中0代表星期日)
getHours() 獲取小時(shí)數(shù)(24小時(shí)制)
getMinutes() 獲取分鐘數(shù)
getSeconds() 獲取秒數(shù)
設(shè)置日期和時(shí)間信息 setTime(long time) 設(shè)置日期對(duì)象的毫秒數(shù)
setYear(int year) 設(shè)置年份(從1900開始),已廢棄(deprecated)
setMonth(int month) 設(shè)置月份(范圍為0-11)
setDate(int date) 設(shè)置日期
setHours(int hours) 設(shè)置小時(shí)數(shù)(24小時(shí)制)
setMinutes(int minutes) 設(shè)置分鐘數(shù)
setSeconds(int seconds) 設(shè)置秒數(shù)
其他操作方法 before(Date when) 檢查日期對(duì)象是否在給定日期之前
after(Date when) 檢查日期對(duì)象是否在給定日期之后
equals(Object obj) 比較兩個(gè)日期對(duì)象是否相等
clone() 創(chuàng)建并返回日期對(duì)象的拷貝
toString() 將日期對(duì)象轉(zhuǎn)換為字符串表示形式

下面是一個(gè)演示如何使用Date類的Java案例程序,包含了代碼注釋說明:

import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        // 使用無參構(gòu)造函數(shù)創(chuàng)建一個(gè)Date對(duì)象,表示當(dāng)前系統(tǒng)日期和時(shí)間
        Date currentDate = new Date();
        System.out.println("Current Date: " + currentDate);

        // 使用指定的毫秒數(shù)創(chuàng)建一個(gè)Date對(duì)象,表示從1970年1月1日開始的特定時(shí)間點(diǎn)
        long milliseconds = 1636382593000L;
        Date specificDate = new Date(milliseconds);
        System.out.println("Specific Date: " + specificDate);

        // 獲取日期和時(shí)間信息

        // 返回自 1970 年 1 月 1 日至當(dāng)前時(shí)間的毫秒數(shù)差值
        long timeDifference = currentDate.getTime();
        System.out.println("Time difference (milliseconds): " + timeDifference);

        // 獲取表示年份的值(從1900開始)
        int year = currentDate.getYear();
        System.out.println("Year: " + (year + 1900));

        // 獲取表示月份的值(范圍為0-11)
        int month = currentDate.getMonth() + 1;
        System.out.println("Month: " + month);

        // 獲取表示日期的值
        int date = currentDate.getDate();
        System.out.println("Date: " + date);

        // 獲取表示星期幾的值(范圍為0-6,其中0代表星期日)
        int dayOfWeek = currentDate.getDay();
        System.out.println("Day of week: " + dayOfWeek);

        // 獲取小時(shí)數(shù)(24小時(shí)制)
        int hours = currentDate.getHours();
        System.out.println("Hours: " + hours);

        // 獲取分鐘數(shù)
        int minutes = currentDate.getMinutes();
        System.out.println("Minutes: " + minutes);

        // 獲取秒數(shù)
        int seconds = currentDate.getSeconds();
        System.out.println("Seconds: " + seconds);

        // 設(shè)置日期和時(shí)間信息

        // 設(shè)置日期對(duì)象的毫秒數(shù)
        specificDate.setTime(System.currentTimeMillis());
        System.out.println("Updated Specific Date: " + specificDate);

        // 設(shè)置年份(從1900開始)
        specificDate.setYear(122);
        System.out.println("Updated Specific Date (Year): " + specificDate);

        // 設(shè)置月份(范圍為0-11)
        specificDate.setMonth(10);
        System.out.println("Updated Specific Date (Month): " + specificDate);

        // 設(shè)置日期
        specificDate.setDate(8);
        System.out.println("Updated Specific Date (Date): " + specificDate);

        // 設(shè)置小時(shí)數(shù)(24小時(shí)制)
        specificDate.setHours(15);
        System.out.println("Updated Specific Date (Hours): " + specificDate);

        // 設(shè)置分鐘數(shù)
        specificDate.setMinutes(30);
        System.out.println("Updated Specific Date (Minutes): " + specificDate);

        // 設(shè)置秒數(shù)
        specificDate.setSeconds(45);
        System.out.println("Updated Specific Date (Seconds): " + specificDate);

        // 其他操作方法

        // 檢查日期對(duì)象是否在給定日期之前
        boolean before = currentDate.before(specificDate);
        System.out.println("Is current date before specific date? " + before);

        // 檢查日期對(duì)象是否在給定日期之后
        boolean after = specificDate.after(currentDate);
        System.out.println("Is specific date after current date? " + after);

        // 比較兩個(gè)日期對(duì)象是否相等
        boolean equals = currentDate.equals(specificDate);
        System.out.println("Are the two dates equal? " + equals);

        // 創(chuàng)建并返回日期對(duì)象的拷貝
        Date copy = (Date) specificDate.clone();
        System.out.println("Copy of specific date: " + copy);

        // 將日期對(duì)象轉(zhuǎn)換為字符串表示形式
        String dateString = specificDate.toString();
        System.out.println("Specific date as string: " + dateString);
    }
}

運(yùn)行結(jié)果如下:

Current Date: Mon Jun 26 19:51:15 CST 2023
Specific Date: Mon Nov 08 22:43:13 CST 2021
Time difference (milliseconds): 1687780275710
Year: 2023
Month: 6
Date: 26
Day of week: 1
Hours: 19
Minutes: 51
Seconds: 15
Updated Specific Date: Mon Jun 26 19:51:15 CST 2023
Updated Specific Date (Year): Sun Jun 26 19:51:15 CST 2022
Updated Specific Date (Month): Sat Nov 26 19:51:15 CST 2022
Updated Specific Date (Date): Tue Nov 08 19:51:15 CST 2022
Updated Specific Date (Hours): Tue Nov 08 15:51:15 CST 2022
Updated Specific Date (Minutes): Tue Nov 08 15:30:15 CST 2022
Updated Specific Date (Seconds): Tue Nov 08 15:30:45 CST 2022
Is current date before specific date? false
Is specific date after current date? false
Are the two dates equal? false
Copy of specific date: Tue Nov 08 15:30:45 CST 2022
Specific date as string: Tue Nov 08 15:30:45 CST 2022

3.4 Calendar 類

Java的Calendar類是用于日期和時(shí)間處理的重要類之一,它提供了豐富的操作方法來對(duì)日期進(jìn)行增減、比較以及格式化等操作。下面是Java Calendar類的全部操作方法API的介紹:

類型 方法 說明
獲取日期和時(shí)間信息 get(int field) 返回給定字段(field)的值,例如Calendar.YEAR表示年份,Calendar.MONTH表示月份,Calendar.DAY_OF_MONTH表示日期等
getTime() 返回表示當(dāng)前時(shí)間的一個(gè)Date對(duì)象
getTimeInMillis() 返回表示當(dāng)前時(shí)間的一個(gè)時(shí)間戳,以毫秒為單位
getActualMaximum(int field) 返回指定字段(field)的最大允許值
getActualMinimum(int field) 返回指定字段(field)的最小允許值
getDisplayName(int field, int style, Locale locale) 返回指定字段(field)的本地化名稱。可以根據(jù)所需的語言環(huán)境(Locale)和樣式(style)獲取字段的可讀名稱
設(shè)置日期和時(shí)間信息 set(int field, int value) 設(shè)置給定字段(field)的值為指定的值(value)
add(int field, int amount) 將指定字段(field)的值增加指定的數(shù)量(amount)。可以實(shí)現(xiàn)對(duì)日期和時(shí)間的增減操作
setTime(Date date) 將對(duì)象的值設(shè)置為給定日期(Date)所代表的時(shí)間
roll(int field, boolean up) 將指定字段(field)的值“滾動(dòng)”,即在不改變更大字段的情況下增減指定字段的值
其他操作方法 before(Object when) 檢查當(dāng)前對(duì)象表示的時(shí)間是否在給定時(shí)間之前
after(Object when) 檢查當(dāng)前對(duì)象表示的時(shí)間是否在給定時(shí)間之后
compareTo(Calendar anotherCalendar) 比較兩個(gè)對(duì)象的時(shí)間順序。返回值為負(fù)數(shù)、零或正數(shù),表示當(dāng)前對(duì)象時(shí)間在另一個(gè)對(duì)象時(shí)間之前、相同或之后
clear() 清除所有字段的值,將Calendar對(duì)象重置為初始狀態(tài)
isSet(int field) 檢查指定字段(field)是否已設(shè)置為具體值

以下是一個(gè)使用Java Calendar 類全部操作方法API的案例程序,代碼都有解釋說明:

import java.util.Calendar;
import java.util.Date;

public class CalendarExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個(gè)Calendar實(shí)例
        Calendar calendar = Calendar.getInstance();

        // get(int field): 返回給定字段的值
        int year = calendar.get(Calendar.YEAR);
        System.out.println("當(dāng)前年份: " + year);

        int month = calendar.get(Calendar.MONTH);
        System.out.println("當(dāng)前月份: " + (month + 1)); // 月份從0開始,所以要加1

        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("今天是本月的第幾天: " + dayOfMonth);

        // set(int field, int value): 設(shè)置給定字段的值
        calendar.set(Calendar.YEAR, 2022);
        System.out.println("修改后的年份: " + calendar.get(Calendar.YEAR));

        // add(int field, int amount): 將指定字段的值增加指定的數(shù)量
        calendar.add(Calendar.MONTH, 2);
        System.out.println("兩個(gè)月后的月份: " + (calendar.get(Calendar.MONTH) + 1));

        // getTime(): 返回表示當(dāng)前Calendar對(duì)象的時(shí)間戳,即Date對(duì)象
        Date date = calendar.getTime();
        System.out.println("當(dāng)前日期時(shí)間: " + date);

        // getTimeInMillis(): 返回表示當(dāng)前Calendar對(duì)象的時(shí)間戳,以毫秒為單位
        long timestamp = calendar.getTimeInMillis();
        System.out.println("當(dāng)前時(shí)間戳: " + timestamp);

        // setTime(Date date): 將Calendar對(duì)象的值設(shè)置為給定日期所代表的時(shí)間
        Date newDate = new Date();
        calendar.setTime(newDate);
        System.out.println("修改后的日期時(shí)間: " + calendar.getTime());

        // getActualMaximum(int field): 返回指定字段的最大允許值
        int maxMonth = calendar.getActualMaximum(Calendar.MONTH);
        System.out.println("當(dāng)前年份最大的月份是: " + (maxMonth + 1));

        // getActualMinimum(int field): 返回指定字段的最小允許值
        int minMonth = calendar.getActualMinimum(Calendar.MONTH);
        System.out.println("當(dāng)前年份最小的月份是: " + (minMonth + 1));

        // before(Object when): 檢查當(dāng)前Calendar對(duì)象表示的時(shí)間是否在給定時(shí)間之前
        Calendar comparisonCalendar = Calendar.getInstance();
        comparisonCalendar.set(Calendar.YEAR, 2022);
        boolean isBefore = calendar.before(comparisonCalendar);
        System.out.println("當(dāng)前日期時(shí)間是否在2022年之前: " + isBefore);

        // after(Object when): 檢查當(dāng)前Calendar對(duì)象表示的時(shí)間是否在給定時(shí)間之后
        boolean isAfter = calendar.after(comparisonCalendar);
        System.out.println("當(dāng)前日期時(shí)間是否在2022年之后: " + isAfter);

        // compareTo(Calendar anotherCalendar): 比較兩個(gè)Calendar對(duì)象的時(shí)間順序
        int comparisonResult = calendar.compareTo(comparisonCalendar);
        System.out.println("當(dāng)前日期時(shí)間與指定日期時(shí)間的比較結(jié)果: " + comparisonResult);

        // clear(): 清除所有字段的值,將Calendar對(duì)象重置為初始狀態(tài)
        calendar.clear();
        System.out.println("清除后的年份: " + calendar.get(Calendar.YEAR));

        // getDisplayName(int field, int style, Locale locale): 返回指定字段的本地化名稱
        String monthName = calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, java.util.Locale.getDefault());
        System.out.println("當(dāng)前月份的本地化名稱: " + monthName);

        // isSet(int field): 檢查指定字段是否已設(shè)置為具體值
        boolean isYearSet = calendar.isSet(Calendar.YEAR);
        System.out.println("年份字段是否已設(shè)置: " + isYearSet);

        // roll(int field, boolean up): 將指定字段的值“滾動(dòng)”,即在不改變更大字段的情況下增減指定字段的值
        calendar.set(Calendar.DAY_OF_MONTH, 31); // 設(shè)置為一個(gè)月的最后一天
        calendar.roll(Calendar.DAY_OF_MONTH, false); // 減少一個(gè)月的天數(shù),而不影響月份
        System.out.println("一個(gè)月前的日期: " + calendar.getTime());
    }
}

運(yùn)行結(jié)果如下:

當(dāng)前年份: 2023
當(dāng)前月份: 6
今天是本月的第幾天: 26
修改后的年份: 2022
兩個(gè)月后的月份: 8
當(dāng)前日期時(shí)間: Fri Aug 26 20:47:49 CST 2022
當(dāng)前時(shí)間戳: 1661518069288
修改后的日期時(shí)間: Mon Jun 26 20:47:49 CST 2023
當(dāng)前年份最大的月份是: 12
當(dāng)前年份最小的月份是: 1
當(dāng)前日期時(shí)間是否在2022年之前: false
當(dāng)前日期時(shí)間是否在2022年之后: true
當(dāng)前日期時(shí)間與指定日期時(shí)間的比較結(jié)果: 1
清除后的年份: 1970
當(dāng)前月份的本地化名稱: 一月
年份字段是否已設(shè)置: true
一個(gè)月前的日期: Fri Jan 30 00:00:00 CST 1970

3.5 SimpleDateFormat 類

SimpleDateFormat類用于將日期對(duì)象轉(zhuǎn)換為字符串(格式化),或?qū)⒆址馕鰹槿掌趯?duì)象,并根據(jù)指定的模式進(jìn)行日期和時(shí)間的格式化與解析。它提供了一系列方法來設(shè)置、獲取和操作日期格式、時(shí)區(qū)以及相關(guān)符號(hào)信息等。通過使用這些方法,我們可以靈活地處理不同格式的日期和時(shí)間數(shù)據(jù)。

注意:在使用SimpleDateFormat類進(jìn)行日期和時(shí)間的格式化和解析時(shí),請(qǐng)確保模式字符串(pattern)的正確性,否則可能會(huì)導(dǎo)致意外的結(jié)果或錯(cuò)誤的解析。模式字符串中的特殊字符必須按照規(guī)定的方式使用,例如yyyy表示四位年份,MM表示兩位月份等。詳細(xì)的模式字符含義可以參考Java官方文檔中的具體說明。

同時(shí),請(qǐng)注意SimpleDateFormat類不是線程安全的,如果在多線程環(huán)境中使用,請(qǐng)采取適當(dāng)?shù)耐酱胧?/p>

下面是Java SimpleDateFormat類的全部操作方法API的介紹:

方法 描述
SimpleDateFormat(String pattern) 創(chuàng)建一個(gè)新的SimpleDateFormat對(duì)象,使用指定的模式
void applyLocalizedPattern(String pattern) 將給定的本地化模式應(yīng)用于此日期格式
void applyPattern(String pattern) 將給定的模式應(yīng)用于此日期格式
String format(Date date) 根據(jù)此日期格式將給定的日期對(duì)象格式化為字符串,并返回結(jié)果
Date parse(String source) 將給定的字符串解析為日期對(duì)象,根據(jù)此日期格式的規(guī)則
void setLenient(boolean lenient) 指定解析過程是否寬松。如果為true,則解析過程中會(huì)盡量接受不嚴(yán)格匹配的輸入。如果為false,則只能接受嚴(yán)格匹配的輸入(默認(rèn)為true
boolean isLenient() 返回解析過程是否寬松的設(shè)置
void setTimeZone(TimeZone zone) 設(shè)置此日期格式的時(shí)區(qū)
TimeZone getTimeZone() 返回此日期格式的時(shí)區(qū)
void setCalendar(Calendar newCalendar) 設(shè)置與此日期格式關(guān)聯(lián)的日歷
Calendar getCalendar() 返回與此日期格式關(guān)聯(lián)的日歷
String toPattern() 返回此日期格式的字符串表示形式
String toLocalizedPattern() 返回此日期格式的本地化字符串表示形式
DateFormatSymbols getDateFormatSymbols() 返回日期格式的符號(hào)信息,例如星期幾名稱、月份名稱等
void setDateFormatSymbols(DateFormatSymbols newFormatSymbols) 設(shè)置日期格式的符號(hào)信息

以下是一個(gè)使用SimpleDateFormat類的全部操作方法的Java案例程序,代碼都有解釋說明:

import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class SimpleDateFormatExample {
    public static void main(String[] args) {
        Date now = new Date();

        // 創(chuàng)建一個(gè)新的SimpleDateFormat對(duì)象,使用指定的模式
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 根據(jù)此日期格式將給定的日期對(duì)象格式化為字符串,并返回結(jié)果
        String format = dateFormat.format(now);
        System.out.println("格式化的當(dāng)前日期時(shí)間: " + format);

        // 將給定的本地化模式應(yīng)用于此日期格式
        dateFormat.applyLocalizedPattern("HH時(shí)mm分ss秒");
        format = dateFormat.format(now);
        System.out.println("本地化模式格式化的當(dāng)前日期時(shí)間: " + format);

        // 將給定的模式應(yīng)用于此日期格式
        dateFormat.applyPattern("yyyyMMddHHmmss");
        format = dateFormat.format(now);
        System.out.println("給定的模式格式化的當(dāng)前日期時(shí)間: " +format);

        // 將給定的字符串解析為日期對(duì)象,根據(jù)此日期格式的規(guī)則
        String dateString = "20220103120000";
        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println("解析得到的日期對(duì)象: " + parsedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        // 指定解析過程是否寬松
        dateFormat.setLenient(false);

        // 返回解析過程是否寬松的設(shè)置
        boolean isLenient = dateFormat.isLenient();
        System.out.println("解析過程是否寬松: " + isLenient);

        // 設(shè)置此日期格式的時(shí)區(qū)
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+2"));
        System.out.println("時(shí)區(qū): " + dateFormat.getTimeZone().getID());

        // 設(shè)置與此日期格式關(guān)聯(lián)的日歷
        Calendar calendar = Calendar.getInstance();
        dateFormat.setCalendar(calendar);
        System.out.println("關(guān)聯(lián)的日歷: " + dateFormat.getCalendar().getTime());

        // 返回此日期格式的字符串表示形式
        String pattern = dateFormat.toPattern();
        System.out.println("日期格式的字符串表示形式: " + pattern);

        // 返回此日期格式的本地化字符串表示形式
        String localizedPattern = dateFormat.toLocalizedPattern();
        System.out.println("日期格式的本地化字符串表示形式: " + localizedPattern);

        // 返回日期格式的符號(hào)信息,例如星期幾名稱、月份名稱等
        DateFormatSymbols symbols = dateFormat.getDateFormatSymbols();
        String[] months = symbols.getMonths();
        System.out.println("月份名稱: " + months[calendar.get(Calendar.MONTH)]);

        // 設(shè)置日期格式的符號(hào)信息
        DateFormatSymbols newSymbols = new DateFormatSymbols();
        newSymbols.setMonths(new String[]{"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"});
        dateFormat.setDateFormatSymbols(newSymbols);

        months = dateFormat.getDateFormatSymbols().getMonths();
        System.out.println("新月份名稱: " + months[calendar.get(Calendar.MONTH)]);
    }
}

這個(gè)例子演示了如何使用SimpleDateFormat類的全部操作方法。通過實(shí)例化SimpleDateFormat對(duì)象并調(diào)用相應(yīng)的方法,我們可以根據(jù)指定的模式將日期對(duì)象格式化為字符串,或者解析給定的字符串為日期對(duì)象。

程序中還演示了如何設(shè)置和獲取時(shí)區(qū)、日歷、模式字符串以及日期格式的符號(hào)信息等。
運(yùn)行結(jié)果如下:

格式化的當(dāng)前日期時(shí)間: 2023-06-26 21:36:41
本地化模式格式化的當(dāng)前日期時(shí)間: 21時(shí)36分41秒
給定的模式格式化的當(dāng)前日期時(shí)間: 20230626213641
解析得到的日期對(duì)象: Mon Jan 03 12:00:00 CST 2022
解析過程是否寬松: false
時(shí)區(qū): GMT+02:00
關(guān)聯(lián)的日歷: Mon Jun 26 21:36:41 CST 2023
日期格式的字符串表示形式: yyyyMMddHHmmss
日期格式的本地化字符串表示形式: aaaannjjHHmmss
月份名稱: 六月
新月份名稱: June

3.6 LocalDateTime 類

下面是LocalDateTime 類的全部操作方法API及其說明:

類型 方法 描述
創(chuàng)建LocalDateTime對(duì)象 now() 返回當(dāng)前日期時(shí)間
now(ZoneId zone) 返回指定時(shí)區(qū)的當(dāng)前日期時(shí)間
now(Clock clock) 使用指定時(shí)鐘對(duì)象返回當(dāng)前日期時(shí)間
of(int year, Month month, int dayOfMonth, int hour, int minute) 創(chuàng)建指定日期時(shí)間的對(duì)象
of(LocalDate date, LocalTime time) 根據(jù)指定的日期和時(shí)間創(chuàng)建對(duì)象
parse(CharSequence text) 將指定字符串解析為對(duì)象
獲取信息 LocalDate toLocalDate() 返回日期部分
LocalTime toLocalTime() 返回時(shí)間部分
int getYear() 返回年份
Month getMonth() 返回月份
int getMonthValue() 返回月份值
int getDayOfMonth() 返回月份中的天數(shù)
int getHour() 返回小時(shí)數(shù)
int getMinute() 返回分鐘數(shù)
int getSecond() 返回秒數(shù)
int getNano() 返回納秒數(shù)
boolean isAfter(LocalDateTime other) 檢查當(dāng)前日期時(shí)間是否在指定日期時(shí)間之后
boolean isBefore(LocalDateTime other) 檢查當(dāng)前日期時(shí)間是否在指定日期時(shí)間之前
boolean isEqual(LocalDateTime other) 檢查當(dāng)前日期時(shí)間是否與指定日期時(shí)間相等
加減操作 plusYears(long years) 將指定的年數(shù)加到當(dāng)前日期時(shí)間
plusMonths(long months) 將指定的月數(shù)加到當(dāng)前日期時(shí)間
plusWeeks(long weeks) 將指定的周數(shù)加到當(dāng)前日期時(shí)間
plusDays(long days) 將指定的天數(shù)加到當(dāng)前日期時(shí)間
plusHours(long hours) 將指定的小時(shí)數(shù)加到當(dāng)前日期時(shí)間
plusMinutes(long minutes) 將指定的分鐘數(shù)加到當(dāng)前日期時(shí)間
plusSeconds(long seconds) 將指定的秒數(shù)加到當(dāng)前日期時(shí)間
plusNanos(long nanos) 將指定的納秒數(shù)加到當(dāng)前日期時(shí)間
minusYears(long years) 將指定的年數(shù)從當(dāng)前日期時(shí)間中減去
minusMonths(long months) 將指定的月數(shù)從當(dāng)前日期時(shí)間中減去
minusWeeks(long weeks) 將指定的周數(shù)從當(dāng)前日期時(shí)間中減去
minusDays(long days) 將指定的天數(shù)從當(dāng)前日期時(shí)間中減去
minusHours(long hours) 將指定的小時(shí)數(shù)從當(dāng)前日期時(shí)間中減去
minusMinutes(long minutes) 將指定的分鐘數(shù)從當(dāng)前日期時(shí)間中減去
minusSeconds(long seconds) 將指定的秒數(shù)從當(dāng)前日期時(shí)間中減去
minusNanos(long nanos) 將指定的納秒數(shù)從當(dāng)前日期時(shí)間中減去
其他操作 boolean isSupported(TemporalField field) 檢查指定字段是否支持日期時(shí)間
String format(DateTimeFormatter formatter) 將日期時(shí)間格式化為字符串
boolean isSupported(ChronoUnit unit) 檢查指定單位是否支持日期時(shí)間間隔計(jì)算
long until(Temporal endExclusive, TemporalUnit unit) 計(jì)算當(dāng)前日期時(shí)間與指定日期時(shí)間之間的時(shí)間間隔

這個(gè)表格列出了LocalDateTime類的全部操作方法,包括創(chuàng)建對(duì)象、獲取日期時(shí)間部分、比較、加減日期時(shí)間值、格式化輸出以及時(shí)間間隔計(jì)算等。你可以根據(jù)具體需求選擇適合的方法來操作LocalDateTime對(duì)象。

下面是一個(gè)使用LocalDateTime類的操作方法的示例程序,演示了如何使用其中的一些常用方法:

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        // 返回當(dāng)前日期時(shí)間
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println("當(dāng)前日期時(shí)間: " + currentDateTime);

        // 返回指定時(shí)區(qū)的當(dāng)前日期時(shí)間
        LocalDateTime dateTimeInZone = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
        System.out.println("指定時(shí)區(qū)的當(dāng)前日期時(shí)間: " + dateTimeInZone);

        // 使用指定時(shí)鐘對(duì)象返回當(dāng)前日期時(shí)間
        Clock clock = Clock.systemDefaultZone();
        LocalDateTime dateTimeWithClock = LocalDateTime.now(clock);
        System.out.println("使用指定時(shí)鐘對(duì)象返回當(dāng)前日期時(shí)間: " + dateTimeWithClock);

        // 創(chuàng)建指定日期時(shí)間的對(duì)象
        LocalDateTime customDateTime = LocalDateTime.of(2022, Month.JUNE, 15, 10, 30);
        System.out.println("創(chuàng)建指定日期時(shí)間的對(duì)象: " + customDateTime);

        // 根據(jù)指定的日期和時(shí)間創(chuàng)建對(duì)象
        LocalDate date = LocalDate.of(2022, Month.JUNE, 15);
        LocalTime time = LocalTime.of(10, 30);
        LocalDateTime dateTimeFromParts = LocalDateTime.of(date, time);
        System.out.println("根據(jù)指定的日期和時(shí)間創(chuàng)建對(duì)象: " + dateTimeFromParts);

        // 將指定字符串解析為對(duì)象
        String dateString = "2022-06-15 10:30:00";
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        System.out.println("解析后的日期時(shí)間: " + parsedDateTime);

        // 獲取信息
        LocalDate localDate = dateTimeFromParts.toLocalDate();
        System.out.println("日期部分: " + localDate);

        LocalTime localTime = dateTimeFromParts.toLocalTime();
        System.out.println("時(shí)間部分: " + localTime);

        int year = dateTimeFromParts.getYear();
        System.out.println("年份: " + year);

        Month month = dateTimeFromParts.getMonth();
        System.out.println("月份: " + month);

        int monthValue = dateTimeFromParts.getMonthValue();
        System.out.println("月份值: " + monthValue);

        int dayOfMonth = dateTimeFromParts.getDayOfMonth();
        System.out.println("月份中的天數(shù): " + dayOfMonth);

        int hour = dateTimeFromParts.getHour();
        System.out.println("小時(shí)數(shù): " + hour);

        int minute = dateTimeFromParts.getMinute();
        System.out.println("分鐘數(shù): " + minute);

        int second = dateTimeFromParts.getSecond();
        System.out.println("秒數(shù): " + second);

        int nano = dateTimeFromParts.getNano();
        System.out.println("納秒數(shù): " + nano);


        // 創(chuàng)建一個(gè)指定的日期時(shí)間
        LocalDateTime comparisonDateTime = LocalDateTime.of(2022, 6, 15, 12, 0, 0);
        // 檢查當(dāng)前日期時(shí)間是否在指定日期時(shí)間之后
        boolean isAfter = currentDateTime.isAfter(comparisonDateTime);
        if (isAfter) {
            System.out.println("當(dāng)前日期時(shí)間在指定日期時(shí)間之后");
        } else {
            System.out.println("當(dāng)前日期時(shí)間在指定日期時(shí)間之前或相同");
        }

        // 加減操作
        LocalDateTime plusYears = dateTimeFromParts.plusYears(1);
        System.out.println("加1年后的日期時(shí)間: " + plusYears);

        LocalDateTime minusMonths = dateTimeFromParts.minusMonths(2);
        System.out.println("減去2個(gè)月后的日期時(shí)間: " + minusMonths);

        // 其他操作
        boolean isSupported = dateTimeFromParts.isSupported(ChronoField.DAY_OF_WEEK);
        System.out.println("是否支持星期字段: " + isSupported);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = dateTimeFromParts.format(formatter);
        System.out.println("格式化后的日期時(shí)間: " + formattedDateTime);

        boolean isSupportedUnit = dateTimeFromParts.isSupported(ChronoUnit.HOURS);
        System.out.println("是否支持小時(shí)單位計(jì)算: " + isSupportedUnit);

        LocalDateTime futureDateTime = LocalDateTime.of(2023, Month.DECEMBER, 31, 23, 59);
        long daysUntilFutureDate = currentDateTime.until(futureDateTime, ChronoUnit.DAYS);
        System.out.println(currentDateTime + "與 "+ futureDateTime +" 之間的天數(shù)間隔: " + daysUntilFutureDate);
    }
}

該示例程序演示了如何使用LocalDateTime類的各種操作方法。運(yùn)行程序結(jié)果如下:

當(dāng)前日期時(shí)間: 2023-06-26T22:12:10.751
指定時(shí)區(qū)的當(dāng)前日期時(shí)間: 2023-06-26T22:12:10.751
使用指定時(shí)鐘對(duì)象返回當(dāng)前日期時(shí)間: 2023-06-26T22:12:10.751
創(chuàng)建指定日期時(shí)間的對(duì)象: 2022-06-15T10:30
根據(jù)指定的日期和時(shí)間創(chuàng)建對(duì)象: 2022-06-15T10:30
解析后的日期時(shí)間: 2022-06-15T10:30
日期部分: 2022-06-15
時(shí)間部分: 10:30
年份: 2022
月份: JUNE
月份值: 6
月份中的天數(shù): 15
小時(shí)數(shù): 10
分鐘數(shù): 30
秒數(shù): 0
納秒數(shù): 0
當(dāng)前日期時(shí)間在指定日期時(shí)間之后
加1年后的日期時(shí)間: 2023-06-15T10:30
減去2個(gè)月后的日期時(shí)間: 2022-04-15T10:30
是否支持星期字段: true
格式化后的日期時(shí)間: 2022-06-15 10:30:00
是否支持小時(shí)單位計(jì)算: true
2023-06-26T22:12:10.751與 2023-12-31T23:59 之間的天數(shù)間隔: 188

3.7 DateTimeFormatter 類

下面是DateTimeFormatter類的全部操作方法API及其說明:

類型 方法 說明
創(chuàng)建DateTimeFormatter對(duì)象 ofPattern(String pattern) 使用指定的模式字符串創(chuàng)建對(duì)象
ofLocalizedDateTime(FormatStyle dateTimeStyle) 創(chuàng)建一個(gè)本地化日期時(shí)間格式的對(duì)象
ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle) 創(chuàng)建一個(gè)本地化日期時(shí)間格式的對(duì)象,并指定日期部分和時(shí)間部分的顯示樣式
ISO_LOCAL_DATE 預(yù)定義的日期格式(yyyy-MM-dd)的對(duì)象
ISO_LOCAL_TIME 預(yù)定義的時(shí)間格式(HH:mm:ss.SSS)的對(duì)象
ISO_LOCAL_DATE_TIME 預(yù)定義的日期時(shí)間格式(yyyy-MM-dd’T’HH:mm:ss.SSS)的對(duì)象
withLocale(Locale locale) 返回一個(gè)新的對(duì)象,其中的地區(qū)設(shè)置為指定的地區(qū)
withDecimalStyle(DecimalStyle decimalStyle) 返回一個(gè)新的對(duì)象,其中的格式設(shè)置為指定的十進(jìn)制樣式
withResolverStyle(ResolverStyle resolverStyle) 返回一個(gè)新的對(duì)象,其中的解析方式設(shè)置為指定的解析方式
其他操作 parse(CharSequence text) 將字符串解析為TemporalAccessor對(duì)象(例如LocalDate、LocalTimeLocalDateTime等)
format(TemporalAccessor temporal) 將指定的TemporalAccessor對(duì)象格式化為字符串
getDecimalStyle() 返回該DateTimeFormatter對(duì)象使用的十進(jìn)制樣式
getResolverStyle() 返回該DateTimeFormatter對(duì)象的解析方式

下面是一個(gè)使用DateTimeFormatter類的操作方法的示例程序,演示了如何使用其中的一些方法:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DecimalStyle;
import java.time.format.FormatStyle;
import java.time.format.ResolverStyle;
import java.util.Locale;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        // 使用指定的模式字符串創(chuàng)建對(duì)象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.now();
        String formattedDateTime = dateTime.format(formatter);
        System.out.println("格式化后的日期時(shí)間: " + formattedDateTime);


        // 創(chuàng)建一個(gè)本地化日期時(shí)間格式的對(duì)象
        DateTimeFormatter localizedFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
        String localizedFormattedDateTime = dateTime.format(localizedFormatter);
        System.out.println("本地化格式化后的日期時(shí)間: " + localizedFormattedDateTime);


        // 創(chuàng)建一個(gè)本地化日期時(shí)間格式的對(duì)象,并指定日期部分和時(shí)間部分的顯示樣式
        localizedFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT);
        String localizedCustomFormattedDateTime = dateTime.format(localizedFormatter);
        System.out.println("指定日期時(shí)間樣式的本地化格式化后的日期時(shí)間: " + localizedCustomFormattedDateTime);


        // 預(yù)定義的日期、時(shí)間和日期時(shí)間格式
        DateTimeFormatter dateFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
        DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_LOCAL_TIME;
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
        String formattedDate = dateTime.format(dateFormatter);
        String formattedTime = dateTime.format(timeFormatter);
        String formattedDateTime2 = dateTime.format(dateTimeFormatter);
        System.out.println("預(yù)定義的日期格式化結(jié)果: " + formattedDate);
        System.out.println("預(yù)定義的時(shí)間格式化結(jié)果: " + formattedTime);
        System.out.println("預(yù)定義的日期時(shí)間格式化結(jié)果: " + formattedDateTime2);


        // 返回一個(gè)新的對(duì)象,其中的地區(qū)設(shè)置為指定的地區(qū)
        DateTimeFormatter withLocaleFormatter = dateTimeFormatter.withLocale(Locale.CHINA);
        String formattedWithLocaleDateTime = dateTime.format(withLocaleFormatter);
        System.out.println("指定地區(qū)的格式化后的日期時(shí)間: " + formattedWithLocaleDateTime);


        // 返回一個(gè)新的對(duì)象,其中的格式設(shè)置為指定的十進(jìn)制樣式
        DateTimeFormatter withDecimalStyleFormatter = withLocaleFormatter.withDecimalStyle(DateTimeFormatter.ISO_TIME.getDecimalStyle());
        String formattedWithDecimalStyleDateTime = dateTime.format(withDecimalStyleFormatter);
        System.out.println("指定十進(jìn)制樣式的格式化后的日期時(shí)間: " + formattedWithDecimalStyleDateTime);


        // 返回一個(gè)新的對(duì)象,其中的解析方式設(shè)置為指定的解析方式
        DateTimeFormatter withResolverStyleFormatter = withDecimalStyleFormatter.withResolverStyle(DateTimeFormatter.ISO_DATE.getResolverStyle());
        String date = "2022-06-15T10:30:00.484";
        LocalDateTime parsedDateTime = LocalDateTime.parse(date, withResolverStyleFormatter);
        System.out.println("嚴(yán)格解析后的日期時(shí)間: " + parsedDateTime);


        // 將字符串解析為TemporalAccessor對(duì)象(例如LocalDate、LocalTime或LocalDateTime等)
        String dateString = "2022-06-15";
        LocalDate parsedDate = LocalDate.parse(dateString, dateFormatter);
        System.out.println("解析后的日期: " + parsedDate);


        // 將指定的TemporalAccessor對(duì)象格式化為字符串
        LocalDateTime localDateTime = LocalDateTime.of(2022, 6, 15, 10, 30);
        String formattedCustomDateTime = localDateTime.format(formatter);
        System.out.println("自定義日期時(shí)間格式化結(jié)果: " + formattedCustomDateTime);


        // 返回該DateTimeFormatter對(duì)象使用的十進(jìn)制樣式
        DecimalStyle decimalStyle = withResolverStyleFormatter.getDecimalStyle();
        System.out.println("該DateTimeFormatter對(duì)象使用的十進(jìn)制樣式: " + decimalStyle);


        // 返回該DateTimeFormatter對(duì)象的解析方式
        ResolverStyle resolverStyle = withResolverStyleFormatter.getResolverStyle();
        System.out.println("該DateTimeFormatter對(duì)象的解析方式: " + resolverStyle);
    }
}

程序運(yùn)行結(jié)果如下:

格式化后的日期時(shí)間: 2023/06/26 22:38:28
本地化格式化后的日期時(shí)間: 2023年6月26日 下午10時(shí)38分28秒
指定日期時(shí)間樣式的本地化格式化后的日期時(shí)間: 2023-6-26 下午10:38
預(yù)定義的日期格式化結(jié)果: 2023-06-26
預(yù)定義的時(shí)間格式化結(jié)果: 22:38:28.126
預(yù)定義的日期時(shí)間格式化結(jié)果: 2023-06-26T22:38:28.126
指定地區(qū)的格式化后的日期時(shí)間: 2023-06-26T22:38:28.126
指定十進(jìn)制樣式的格式化后的日期時(shí)間: 2023-06-26T22:38:28.126
嚴(yán)格解析后的日期時(shí)間: 2022-06-15T10:30:00.484
解析后的日期: 2022-06-15
自定義日期時(shí)間格式化結(jié)果: 2022/06/15 10:30:00
該DateTimeFormatter對(duì)象使用的十進(jìn)制樣式: DecimalStyle[0+-.]
該DateTimeFormatter對(duì)象的解析方式: STRICT

3.8 使用技巧

為了更好地使用Java的時(shí)間處理相關(guān)類,以下是一些使用技巧:

  • 盡量使用java.time包代替舊的日期類:Java 8引入了新的日期和時(shí)間API,位于java.time包中,它們提供了更好的設(shè)計(jì)和功能;
  • 使用線程安全的類:如果需要在多線程環(huán)境中使用日期和時(shí)間類,建議使用線程安全的類,如Instant、LocalDateTime等;
  • 謹(jǐn)慎使用舊的Date和Calendar類:由于它們的局限性和不足,使用上需謹(jǐn)慎并注意線程安全問題。

4?? 應(yīng)用場(chǎng)景

Java的時(shí)間處理相關(guān)類適用于各種應(yīng)用場(chǎng)景,包括但不限于以下幾個(gè)常見場(chǎng)景:

  1. 日期和時(shí)間計(jì)算:Java的時(shí)間處理類可以用于執(zhí)行各種日期和時(shí)間的計(jì)算操作。例如,你可以使用LocalDateLocalDateTime類來增加或減少天數(shù)、月份、年份以及其他日期部分。

  2. 日期和時(shí)間格式化和解析:Java的時(shí)間處理類提供了強(qiáng)大的日期和時(shí)間格式化和解析功能。你可以使用DateTimeFormatter類來將日期對(duì)象轉(zhuǎn)換為指定格式的字符串,并可以將字符串解析為日期對(duì)象。

  3. 日期和時(shí)間比較和排序:通過使用Java的時(shí)間處理類,可以方便地比較和排序日期和時(shí)間。你可以使用compareTo方法進(jìn)行比較,以確定一個(gè)日期是在另一個(gè)日期之前、之后還是相等。

  4. 跨時(shí)區(qū)操作:Java的時(shí)間處理類支持跨時(shí)區(qū)的操作。你可以使用ZoneId類和ZonedDateTime類來管理和轉(zhuǎn)換不同時(shí)區(qū)的日期和時(shí)間。

  5. 定時(shí)任務(wù)調(diào)度:Java的時(shí)間處理類可以與定時(shí)任務(wù)調(diào)度器結(jié)合使用,例如Spring框架中的Cron表達(dá)式觸發(fā)器或JavaSE中的Timer類,以實(shí)現(xiàn)定時(shí)任務(wù)的調(diào)度和觸發(fā)。

總而言之,Java的時(shí)間處理相關(guān)類適用于廣泛的應(yīng)用場(chǎng)景,包括日期和時(shí)間的計(jì)算、格式化和解析、比較和排序、跨時(shí)區(qū)操作、定時(shí)任務(wù)調(diào)度、數(shù)據(jù)庫持久化以及業(yè)務(wù)邏輯中的日期計(jì)算等。無論你是開發(fā)桌面應(yīng)用、Web應(yīng)用還是后端系統(tǒng),Java的時(shí)間處理類都提供了豐富的功能和方法,方便處理各種日期和時(shí)間操作需求。

5??擴(kuò)展:第三方框架中對(duì)日期時(shí)間處理的支持

Spring框架提供了多種對(duì)Java日期時(shí)間處理的工具類支持。下面列出了Spring中一些常用的日期時(shí)間處理相關(guān)的類和模塊:

  1. org.springframework.format.datetime.DateFormatter:日期格式化器,用于將日期對(duì)象轉(zhuǎn)換為字符串、字符串轉(zhuǎn)換為日期對(duì)象。

  2. org.springframework.format.annotation.DateTimeFormat:日期時(shí)間格式注解,用于指定特定字段或方法參數(shù)的日期時(shí)間格式。

  3. org.springframework.util.DateUtils:日期時(shí)間工具類,提供了各種日期操作的靜態(tài)輔助方法,例如日期比較、格式化、解析等。

  4. org.springframework.scheduling.support.CronTrigger:基于Cron表達(dá)式的觸發(fā)器,可以使用Cron表達(dá)式定義定時(shí)任務(wù)的執(zhí)行規(guī)則,靈活控制任務(wù)的調(diào)度時(shí)間。

除了這些類和模塊,Spring還通過整合其他第三方日期時(shí)間處理庫,如Joda-Time和java.time(JSR-310),為應(yīng)用程序提供更強(qiáng)大的日期時(shí)間處理功能。Spring在不同的模塊中提供了對(duì)這些庫的集成和支持,例如在Spring Boot中,可以輕松配置和使用Java 8日期時(shí)間API或Joda-Time。

除了Spring框架,還有一些其他流行的Java框架提供對(duì)日期時(shí)間處理的工具類支持。以下是其中幾個(gè)常用的框架:

  1. Apache Commons Lang:Apache Commons Lang是一個(gè)通用的Java工具庫,提供了許多實(shí)用的工具類和方法。它包含DateUtilsFastDateFormat等類,用于日期時(shí)間的解析、格式化和操作。

  2. Joda-Time:Joda-Time是一個(gè)非常流行的日期時(shí)間處理庫,在Java 8之前被廣泛使用。它提供了豐富的日期時(shí)間類和方法,如DateTimeLocalDate、Period等,以及靈活的日期時(shí)間操作和計(jì)算功能。

  3. ThreeTen-Extra:ThreeTen-Extra是在Java 8日期時(shí)間API基礎(chǔ)上構(gòu)建的擴(kuò)展庫。它提供了額外的日期時(shí)間類和工具,如季度、年賬、時(shí)間間隔計(jì)算等功能。

這些框架提供了不同程度和不同特點(diǎn)的日期時(shí)間處理工具類支持,可以根據(jù)具體需求選擇適合的框架。無論是處理基本的日期比較和格式化,還是執(zhí)行復(fù)雜的日期計(jì)算和跨時(shí)區(qū)操作,這些框架都能滿足各種應(yīng)用場(chǎng)景的需求。

?? 總結(jié)

本文介紹了Java日期時(shí)間處理類的概念,以及它們?cè)谌掌诤蜁r(shí)間操作中的優(yōu)勢(shì)和缺點(diǎn)。我們討論了Java提供的一些主要日期時(shí)間處理類,包括Date、Calendar、SimpleDateFormatLocalDateTimeDateTimeFormatter等。我們分析了它們的使用方法,并提供了一些使用案例和技巧。

這些Java日期時(shí)間處理類提供了豐富的功能和靈活性,使得我們可以方便地執(zhí)行日期和時(shí)間的計(jì)算、格式化、解析和比較。然而,每個(gè)類都有自己的特點(diǎn)和適用范圍。例如,Date類在早期被廣泛使用,但它的缺點(diǎn)也逐漸顯現(xiàn)出來,不推薦作為首選。LocalDateTimeDateTimeFormatter則是Java 8引入的新API,提供了更方便和優(yōu)雅的方式來處理日期和時(shí)間。

在應(yīng)用場(chǎng)景方面,Java的日期時(shí)間處理類適用于各種應(yīng)用需求。我們可以將其用于日期和時(shí)間計(jì)算、格式化和解析、跨時(shí)區(qū)操作、定時(shí)任務(wù)調(diào)度、數(shù)據(jù)庫持久化以及業(yè)務(wù)邏輯中的日期計(jì)算等。這些類提供了強(qiáng)大的功能和方法,能夠滿足不同項(xiàng)目的日期時(shí)間處理需求。

最后,我們提到了一些第三方框架,如Spring和Apache Commons Lang,它們也提供了對(duì)Java日期時(shí)間處理的支持。這些框架通過整合其他庫或提供自己實(shí)現(xiàn)的工具類,進(jìn)一步增強(qiáng)了日期時(shí)間處理的功能和靈活性。

綜上所述,Java日期時(shí)間處理類提供了豐富的工具和方法來處理各種日期時(shí)間操作。無論是開發(fā)桌面應(yīng)用、Web應(yīng)用還是后端系統(tǒng),Java的日期時(shí)間處理類都能滿足不同場(chǎng)景和需求,讓開發(fā)人員更輕松地處理日期時(shí)間相關(guān)任務(wù)。


? 溫習(xí)回顧上一篇(點(diǎn)擊跳轉(zhuǎn))
《【Java基礎(chǔ)教程】(三十六)常用類庫篇 · 第六講:數(shù)學(xué)運(yùn)算類——全面講解Java數(shù)學(xué)計(jì)算支持類庫,BigDecimal、Math、Random、DecimalFormat…~》

? 繼續(xù)閱讀下一篇(點(diǎn)擊跳轉(zhuǎn))
《【Java基礎(chǔ)教程】(三十八)常用類庫篇 · 第八講:數(shù)組操作類——解析Arrays類中的全部操作方法,解鎖Java數(shù)組操作技巧~》
文章來源地址http://www.zghlxwxcb.cn/news/detail-540242.html

【Java高級(jí)語法】(十九)日期時(shí)間處理類:還在用又老又舊的Date、Calendar嗎?看我狂敲三萬字!為你全面解析 LocalDateTime、DateTimeFormatter ~,Java,java,jvm,開發(fā)語言,經(jīng)驗(yàn)分享,電腦,后端,java-ee

到了這里,關(guān)于【Java高級(jí)語法】(十九)日期時(shí)間處理類:還在用又老又舊的Date、Calendar嗎?看我狂敲三萬字!為你全面解析 LocalDateTime、DateTimeFormatter ~的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java基礎(chǔ)教程】(三十七)常用類庫篇 · 第七講:日期時(shí)間處理類——三萬字全面講解 LocalDateTime和 DateTimeFormatter,Date、Calendar ~

    【Java基礎(chǔ)教程】(三十七)常用類庫篇 · 第七講:日期時(shí)間處理類——三萬字全面講解 LocalDateTime和 DateTimeFormatter,Date、Calendar ~

    Java的時(shí)間處理相關(guān)類主要是為了提供靈活、可靠地處理日期和時(shí)間的能力,以滿足各種應(yīng)用程序中對(duì)時(shí)間的需求。這些類旨在簡(jiǎn)化日期和時(shí)間的操作,并提供一致的方法和功能來處理時(shí)間上的計(jì)算、格式化和解析。 ?? 時(shí)間日期及處理類匯總 將Java中所有用于表示日期時(shí)間的

    2024年02月16日
    瀏覽(36)
  • 【Java練習(xí)題匯總】《第一行代碼JAVA》Java常用類庫篇,匯總Java練習(xí)題——Optional類、包裝類、可變字符串支持類、Runtime類、System類、數(shù)學(xué)運(yùn)算類、日期時(shí)間處理...

    【Java練習(xí)題匯總】《第一行代碼JAVA》Java常用類庫篇,匯總Java練習(xí)題——Optional類、包裝類、可變字符串支持類、Runtime類、System類、數(shù)學(xué)運(yùn)算類、日期時(shí)間處理...

    一、填空題 在 java.lang 包中提供了兩個(gè)字符串類,分別是________ 和________ 。這兩個(gè)類都是________ 接口的子類,字符串類提供的求字符串長(zhǎng)度的方法是________________ 。 Java 提供的兩個(gè)大數(shù)操作類是________ 和________ 。 對(duì)象克隆方法是________ 類提供的,方法名稱是________________ ,對(duì)

    2024年02月16日
    瀏覽(37)
  • 前端常見需求整理 - 日期處理(包含moment、時(shí)間戳、日期對(duì)象)

    moment對(duì)象 使用 UI 框架的時(shí)間相關(guān)組件時(shí)(如 ant-design),默認(rèn)的綁定值的格式往往為這種。 字符串 部分栗子 對(duì)應(yīng) YYYY-MM-DD HH:mm:ss 2022-04-12 20:30:00 YYYY/MM/DD HH:mm:ss 2022/04/12 20:30:00 YYYY/MM/DD hh:mm:ss 2022/04/12 08:30:00 YYYY/M/D HH:mm:ss 2022/4/12 20:30:00 YYYY/MM/DD HH:mm 2022/04/12 20:30 日期對(duì)象 通過

    2024年02月09日
    瀏覽(28)
  • Python中的時(shí)間和日期處理

    在Python開發(fā)中,我們經(jīng)常需要處理日期和時(shí)間。Python提供了一些內(nèi)置模塊,如 datetime 、 time 和 calendar ,這些模塊讓我們能夠輕松地獲取、操作和格式化日期和時(shí)間。本文將介紹如何在Python中使用這些模塊進(jìn)行日期和時(shí)間的處理。 在Python中,我們可以使用 datetime 模塊的 date

    2024年02月11日
    瀏覽(19)
  • R語言 | 日期和時(shí)間的處理

    R語言 | 日期和時(shí)間的處理

    目錄 一、日期的設(shè)定與使用 1.1 as.Date()函數(shù) 1.2 weekdays()函數(shù) 1.3 months()函數(shù) 1.4 quarters()函數(shù) 1.5 Sys.localeconv()函數(shù) 1.6 Sys.Date()函數(shù) 1.7 再談seq()函數(shù) 1.8 使用不同格式表示日期 ?二、時(shí)間的設(shè)定與使用 2.1 Sys.time()函數(shù) 2.2 as.POSIXct()函數(shù) 2.3 時(shí)間也是可以做比較的 2.4? seq()函數(shù)與時(shí)間

    2024年02月02日
    瀏覽(16)
  • 52_Pandas處理日期和時(shí)間列(字符串轉(zhuǎn)換、日期提取等)

    將解釋如何操作表示 pandas.DataFrame 的日期和時(shí)間(日期和時(shí)間)的列。字符串與 datetime64[ns] 類型的相互轉(zhuǎn)換,將日期和時(shí)間提取為數(shù)字的方法等。 以下內(nèi)容進(jìn)行說明。 如何將 datetime64[ns] 類型指定為索引并將其處理為時(shí)序數(shù)據(jù)以及如何使用,請(qǐng)參考以下文章。 26_Pandas.DataFr

    2024年01月22日
    瀏覽(24)
  • Python - 字符串轉(zhuǎn)日期時(shí)間,格式的處理以及時(shí)間加減計(jì)算

    Python - 字符串轉(zhuǎn)日期時(shí)間,格式的處理以及時(shí)間加減計(jì)算

    1,字符串轉(zhuǎn)日期 運(yùn)行結(jié)果: 注意事項(xiàng): a, 日期時(shí)間轉(zhuǎn)換時(shí),讀取的格式要和給定的格式一樣,否則會(huì)因?yàn)闊o法匹配而報(bào)錯(cuò) 【格式1 和 格式2 需要保持一直】 b, 轉(zhuǎn)換之后的日期格式會(huì)自動(dòng)加上\\\'秒\\\'位 2,時(shí)間格式處理 根據(jù)自己的需求,通過strftime( )函數(shù)內(nèi)的控制符把日期時(shí)間格

    2024年02月12日
    瀏覽(20)
  • Python處理日期和時(shí)間庫之a(chǎn)rrow使用詳解

    Python處理日期和時(shí)間庫之a(chǎn)rrow使用詳解

    日期和時(shí)間處理是許多應(yīng)用程序中的常見任務(wù),但在 Python 中,標(biāo)準(zhǔn)庫中的? datetime ?模塊有時(shí)可能會(huì)讓這些任務(wù)變得復(fù)雜和繁瑣。幸運(yùn)的是,有一個(gè)名為 Arrow 的第三方庫,它提供了簡(jiǎn)化日期和時(shí)間處理的功能,使其更加直觀和易用。本文將深入探討 Arrow 庫的基本概念、安裝

    2024年01月25日
    瀏覽(22)
  • 為啥在編程的世界里,日期時(shí)間處理這么難?

    做過開發(fā)的同學(xué)都有體會(huì),日期時(shí)間的處理很麻煩,稍不注意就會(huì)出現(xiàn)日期格式不一樣,或者時(shí)間差8小時(shí)。 那為何日期時(shí)間這么難處理呢?今天我們就來梳理一下在編程的世界里,為啥日期時(shí)間這么難處理。 我們先來熟悉幾個(gè)概念 1、 時(shí)區(qū)(Timezone) 由于各地的日出日落時(shí)

    2024年04月28日
    瀏覽(17)
  • Python 日期和時(shí)間處理教程:datetime 模塊的使用

    Python 日期和時(shí)間處理教程:datetime 模塊的使用

    Python 中的日期不是獨(dú)立的數(shù)據(jù)類型,但我們可以導(dǎo)入一個(gè)名為 datetime 的模塊來使用日期作為日期對(duì)象。 示例:導(dǎo)入 datetime 模塊并顯示當(dāng)前日期: 當(dāng)我們執(zhí)行上面示例中的代碼時(shí),結(jié)果將是: 日期包含年、月、日、小時(shí)、分鐘、秒和微秒。datetime 模塊有許多方法可以返回有

    2024年02月08日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包