衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

java 8的日期用法

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-09 15:50 ? 次閱讀

java 已經(jīng)出到 17 了,而小編還在用 8 的版本,在 8 中已經(jīng)推出了新的日期 API,不在使用 。java.time 包下提供了用于日期、時間、實例和周期的主要 API。

獲取今天日期

LocalDate 存儲了日期,如:2022-01-09,它不包含時間。

public static void main(String[] args) {
    LocalDate now = LocalDate.now();
    System.out.println(now);
}

設置日期

of 方法是一個靜態(tài)方法,接收年、月、日三個 int 參數(shù),返回 LocalDate 對象。需要注意的是月份不是從 0 開始的。

public static void main(String[] args) {
    LocalDate date = LocalDate.of(2022,1,9);
    System.out.println(date);
}

日期判斷

日期操作第一個會想到的就是兩個日期是否相等的操作

public static void main(String[] args) {
    LocalDate date = LocalDate.of(2022,1,10);
    LocalDate today = LocalDate.now();
    if(date.equals(today)) {
        System.out.println("日期相等");
    } else {
        System.out.println("日期不相等");
    }
}

當前日期是否早于、晚于另外的日期,使用 isAfter() 和 isBefore() 方法。

public static void main(String[] args) {
    LocalDate today = LocalDate.now();
    LocalDate date = LocalDate.of(2022,1,9);
    if(today.isAfter(date)) {
        System.out.println("今天已經(jīng)晚了");
    } else {
        System.out.println("今天還早");
    }

    if(today.isBefore(date)) {
        System.out.println("今天在前面");
    } else {
        System.out.println("今天在后面");
    }

}

匹配周期性的日期

在某些業(yè)務中,每年、每月、每周都會有一個特定的日期,比如每個月的賬單日、每年的生日等日期,這時就不能把年、月等放入日期比較。可以使用 DayOfWeek、MonthDay、YearMonth 類處理這類日期。

public static void main(String[] args) {
    LocalDate date = LocalDate.of(2022,1,9);
    MonthDay monthDay = MonthDay.of(date.getMonth(), date.getDayOfMonth());
    MonthDay today = MonthDay.from(LocalDate.now());
    if(today.equals(monthDay)) {
        System.out.println("今天已經(jīng)到特定的日期了");
    } else {
        System.out.println("今天還沒有到特定的日期");
    }
}

一周、月、年前、后的日期

ChronoUnit 是用來表示時間的單位,比如:ChronoUnit.YEARS 年,ChronoUnit.WEEKS 周。minus()、plus() 方法用來減去、加上一個時間周期。

public static void main(String[] args) {

        LocalDate today = LocalDate.now();
        LocalDate preWeek = today.minus(1, ChronoUnit.WEEKS);
        System.out.println(preWeek);

        LocalDate afterWeek = today.plus(1, ChronoUnit.WEEKS);
        System.out.println(afterWeek);

        LocalDate preMon = today.minus(1, ChronoUnit.MONTHS);
        System.out.println(preMon);

        LocalDate afterMon = today.plus(1, ChronoUnit.MONTHS);
        System.out.println(afterMon);

        LocalDate preYear = today.minus(1, ChronoUnit.YEARS);
        System.out.println(preYear);

        LocalDate afterYear = today.plus(1, ChronoUnit.YEARS);
        System.out.println(afterYear);

    }

日期間隔

計算兩個日期的間隔了多少天、月是一個很常規(guī)的業(yè)務操作。月是用 Period 類計算,天使用 LocalDate 的 toEpochDay() 方法計算。

public static void main(String[] args) {
    LocalDate today = LocalDate.now();
    LocalDate date = LocalDate.of(2022,4,10);
    Period period = Period.between( date,today);
    System.out.println("間隔了" + period.getMonths() + "月");
    System.out.println("間隔了" + (today.toEpochDay() - date.toEpochDay()) + "天");

}

時間戳

Instant 類有一個靜態(tài)工廠方法now()會返回當前的時間戳。

public static void main(String[] args) {
    Instant instant = Instant.now();
    System.out.println(instant);
    System.out.println(instant.toEpochMilli());
}

格式化日期

DateTimeFormatter 是一個線程安全的日期和時間格式化器,下面是用 DateTimeFormatter.BASIC_ISO_DATE 將 20210109 格式化成了 2021-01-09。

public static void main(String[] args) {
    String str = "20210109";
    LocalDate formatted = LocalDate.parse(str, DateTimeFormatter.BASIC_ISO_DATE);
    System.out.println("格式化后的日期為:  "+ formatted);
}

DateTimeFormatter 也可以自定義格式化字符串。

public static void main(String[] args) {
    String str = "09012021";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMddyyyy");
    LocalDate date = LocalDate.parse(str, formatter);
    System.out.print(date);
}

是否為閏年

小編在學程序之初被閏年折磨的死去活來,給個年份計算是不是閏年。java 8 的 isLeapYear() 就很好的解決了這個問題。

public static void main(String[] args) {
    LocalDate today = LocalDate.now();
    if(today.isLeapYear()){
        System.out.println("閏年");
    }else {
        System.out.println("不是閏年");
    }

}

日期轉(zhuǎn)字符串

上面格式化的例子是將字符串轉(zhuǎn)為日期,下面是將日期轉(zhuǎn)為字符串。

public static void main(String[] args) {
    LocalDate now = LocalDate.now();
    DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    String str = now.format(format);
    System.out.print(str);
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2975

    瀏覽量

    105149
  • API
    API
    +關注

    關注

    2

    文章

    1511

    瀏覽量

    62398
  • 格式化
    +關注

    關注

    2

    文章

    39

    瀏覽量

    9144
收藏 人收藏

    評論

    相關推薦

    Java多線程的用法

    本文將介紹一下Java多線程的用法。 基礎介紹 什么是多線程 指的是在一個進程中同時運行多個線程,每個線程都可以獨立執(zhí)行不同的任務或操作。 與單線程相比,多線程可以提高程序的并發(fā)性和響應
    的頭像 發(fā)表于 09-30 17:07 ?1006次閱讀

    常見的幾種日期對象用法

    前言 LocalDateTime、LocalDate、LocalTime 是 Java8 全新的日期框架,加強了對時間的管理,有很多特別好用的時間運算方法,而且是線程安全的,較之
    的頭像 發(fā)表于 09-25 11:10 ?802次閱讀
    常見的幾種<b class='flag-5'>日期</b>對象<b class='flag-5'>用法</b>

    整理一下ElementUI+VUE日期控件禁用用法

    今天給大家整理一下ElementUI+VUE 日期控件禁用用法,希望對大家有所幫助!HTML文件
    發(fā)表于 01-18 09:35

    JAVA教程之時間日期服務器

    JAVA教程之時間日期服務器,很好的JAVA的資料,快來學習吧
    發(fā)表于 04-11 17:28 ?7次下載

    java并發(fā)編程實戰(zhàn)之輔助類用法

    二.CyclicBarrier用法 三.Semaphore用法 若有不正之處請多多諒解,并歡迎批評指正。 一.CountDownLatch用法 CountDownLatch類位于java
    發(fā)表于 09-27 16:50 ?0次下載

    java8新特性

    java8為接口聲明添加非抽象方法的實現(xiàn),也成為拓展方法。
    發(fā)表于 11-27 15:54 ?1756次閱讀

    java final關鍵字用法技巧匯總解析

    談到final關鍵字,想必很多人都不陌生,在使用匿名內(nèi)部類的時候可能會經(jīng)常用到final關鍵字。另外,Java中的String類就是一個final類,那么今天我們就來了解final這個關鍵字的用法
    發(fā)表于 12-01 11:02 ?1137次閱讀
    <b class='flag-5'>java</b> final關鍵字<b class='flag-5'>用法</b>技巧匯總解析

    Java數(shù)組的常用方法_Java:數(shù)組工具類Arrays類的常用方法的用法及代碼

    本文主要詳細介紹了Java數(shù)組的常用方法以及數(shù)組工具類Arrays類的常用方法的用法及代碼。
    發(fā)表于 01-29 10:25 ?2939次閱讀

    java日期結(jié)果與操作系統(tǒng)時間相差8小時處理解決方法說明

    本文檔的主要內(nèi)容詳細介紹的是java日期結(jié)果與操作系統(tǒng)時間相差8小時處理解決方法說明。最近有遇到java的時間不對的事件,現(xiàn)象:通過java
    發(fā)表于 01-22 11:10 ?8次下載
    <b class='flag-5'>java</b>新<b class='flag-5'>日期</b>結(jié)果與操作系統(tǒng)時間相差<b class='flag-5'>8</b>小時處理解決方法說明

    如何正確區(qū)分Java中super函數(shù)用法

    Java中super函數(shù)有很多方法,在使用的時候我們應該如何正確區(qū)分? 2 方法 三種用法: 訪問父類的方法。 調(diào)用父類構(gòu)造方法。 訪問父類中的隱藏成員變量。
    的頭像 發(fā)表于 02-21 15:08 ?605次閱讀

    Java枚舉的特點及用法

    Java 枚舉出現(xiàn)之前,通常會使用常量類來表示一組固定的常量值,直到Java 1.5之后推出了枚舉,那么枚舉類型有哪些特點,它比常量類又好在哪里呢。 本文將分析一下枚舉的特點及用法。 1.
    的頭像 發(fā)表于 09-30 10:02 ?1564次閱讀

    this關鍵字在Java中的用法

    this 關鍵字只能在方法內(nèi)部使用,表示對“調(diào)用方法的那個對象”的引用。 其實簡單來說 this 關鍵字就是表示當前對象,下面我們來具體介紹 this 關鍵字在Java中的用法。 1、調(diào)用成員變量
    的頭像 發(fā)表于 10-10 16:49 ?646次閱讀
    this關鍵字在<b class='flag-5'>Java</b>中的<b class='flag-5'>用法</b>

    sql中日期函數(shù)的用法

    日期函數(shù)在SQL中是非常重要的功能之一,它們能幫助我們在數(shù)據(jù)庫中存儲和處理日期和時間數(shù)據(jù)。在本文中,我將詳細介紹一些常用的SQL日期函數(shù),包括如何創(chuàng)建日期和時間數(shù)據(jù)、如何格式化和轉(zhuǎn)換
    的頭像 發(fā)表于 11-17 16:24 ?1141次閱讀

    java字符串轉(zhuǎn)化為日期格式

    Java中,字符串轉(zhuǎn)化為日期格式是一個常見的需求。日期格式在處理時間相關的操作時非常重要,它可以用來表示一段時間的開始和結(jié)束,也可以用來計算時間差等。本文將詳細介紹如何將一個字符串轉(zhuǎn)化為日期
    的頭像 發(fā)表于 11-17 16:38 ?3075次閱讀

    java中obj類型的實戰(zhàn)用法

    類型具有許多實戰(zhàn)用法,下面將詳細介紹一些常見的使用場景。 作為方法參數(shù)和返回值的類型 在Java中,可以使用obj類型作為方法的參數(shù)或返回值類型。這種用法可以使方法具有更廣泛的適用性,因為obj類型可以接受任何對象作為參數(shù)或返回
    的頭像 發(fā)表于 11-21 10:27 ?817次閱讀
    赌场百家乐官网是如何| 有百家乐的游戏平台| 太阳城网上| 真人百家乐官网怎么对冲| 百家乐游戏软件出售| 澳门新濠天地| 百家乐官网是个什么样的游戏 | 东乌珠穆沁旗| 百家乐的玩法和技巧| 真錢棋牌游戏| 百家乐平台下载| 百家乐官网视频桌球| 百家乐出千工具价格| 尊博国际| 7人百家乐桌子| 新化县| 百家乐玩揽法的论坛| 博狗百家乐官网开户| 百家乐小九梭哈| 百家乐官网扑克多少张| 大发888娱乐城维护| 成人百家乐官网的玩法技巧和规则 | 百家乐输了好多钱| 邛崃市| 真人百家乐的玩法技巧和规则| 在线百家乐官网3d| 威尼斯人娱乐网可信吗| 先锋百家乐官网的玩法技巧和规则| 华人棋牌游戏| 百家乐娱乐分析软| 祁阳县| 百家乐发牌规| 百家乐官网怎么玩会| 舟山星空棋牌首页| 百家乐投注五揽式| 百家乐官网视频麻将游戏| 百家乐网| 属蛇和属猪做生意吗| 百家乐官网扑克玩法| 新加坡百家乐规则| 属蛇和属猪做生意|