1. 程式人生 > >【個人總結 | 個人轉載】——Java時間工具類

【個人總結 | 個人轉載】——Java時間工具類

本文介紹兩個時間日期工具類的使用:1、Joda-time;2、Java8自帶的時間類。

兩者的使用都很方便,用法類似,少量程式碼就可以實現常用的功能,如:根據自定義格式獲取時間、時間加減、時間對比等。

具體看程式碼:

1. maven專案引入jar 包

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.10</version>
</dependency>

2. 程式碼:(不夠用自己擴充套件一下,在公司wiki上看到的,自己整理了一下)

package com.cyf.date;
import org.joda.time.DateTime;
import java.util.Objects;

/**
 * @author cyf
 * @description
 * @create 2018-11-16 16:35
 **/
public class TestJodaTime {

    public static final String DEFAULT_PATTEN = "yyyy-MM-dd HH:mm:ss";
    public static final Integer DEFAULT_MONTH = 1;

    /**
     * 獲取當前時間
     *
     * @return 當前時間預設格式為 yyyy-MM-dd HH:mm:ss
     */
    public static String getNowDate() {
        return getNowDate(null);
    }

    /**
     * 獲取當前時間
     *
     * @return 返回當前時間
     */
    public static DateTime nowDate() {
        return new DateTime();
    }

    /**
     * 獲取當前時間
     *
     * @param pattern 格式
     * @return 返回當前時間 格式為 pattern
     * 預設為 yyyy-MM-dd HH:mm:ss
     */
    public static String getNowDate(String pattern) {
        if (Objects.isNull(pattern)) {
            pattern = DEFAULT_PATTEN;
        }
        return new DateTime().toString(pattern);
    }

    /**
     * 獲取前幾個月時間
     *
     * @param date        當前時間
     * @param beforeMonth 幾個月前
     * @return 返回幾個月前時間 預設為 yyyy-MM-dd HH:mm:ss
     */
    public static String getBeforeMonthDate(DateTime date, Integer beforeMonth) {
        return getBeforeMonthDate(date, beforeMonth, null);
    }

    /**
     * 獲取前幾個月時間
     *
     * @param date        當前時間
     * @param beforeMonth 幾個月前
     * @return 返回幾個月前時間 格式為 pattern
     * 預設為 yyyy-MM-dd HH:mm:ss
     * @Param pattern       時間格式
     */
    public static String getBeforeMonthDate(DateTime date, Integer beforeMonth, String pattern) {
        if (Objects.isNull(beforeMonth)) {
            beforeMonth = DEFAULT_MONTH;
        }
        if (Objects.isNull(pattern)) {
            pattern = DEFAULT_PATTEN;
        }
        return date.minusMonths(beforeMonth).toString(pattern);
    }


    // Joda-time的使用 測試
    public static void main(String[] args) {

        //日期比較
        DateTime d1 = new DateTime("2012-02-01");
        DateTime d2 = new DateTime("2012-05-01");

        //和系統時間比
        boolean b1 = d1.isAfterNow();
        boolean b2 = d1.isBeforeNow();
        boolean b3 = d1.isEqualNow();

        //和其他日期比
        boolean f1 = d1.isAfter(d2);
        boolean f2 = d1.isBefore(d2);
        boolean f3 = d1.isEqual(d2);

        // 獲取當前時間
        String nowDate = getNowDate();
        System.out.println("當前時間:" + nowDate);

        DateTime now = nowDate();
        // 獲取4個月之前的時間
        String beforeDate = getBeforeMonthDate(now, 4);
        System.out.println("4個月之前的時間:" + beforeDate);

        // 其他方法
        System.out.println("當前時間:" + now.toString(DEFAULT_PATTEN));
        System.out.println("9天后時間:" + now.plusDays(9).toString(DEFAULT_PATTEN));
        System.out.println("4分鐘後時間:" + now.plusMinutes(4).toString(DEFAULT_PATTEN));
        System.out.println("4小時後時間:" + now.plusHours(4).toString(DEFAULT_PATTEN));
    }

//    Java8時間類使用
//    public static void main(String[] args) {
//
//        //獲取時間
//        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
//        Instant instant = Instant.now();
//        LocalDate localDate = LocalDate.now();
//        LocalTime localTime = LocalTime.now();
//        String localDateTime = LocalDateTime.now().format(dateTimeFormatter);
//        LocalDate date = LocalDate.of(2018, 10, 30);
//        System.out.println(instant);
//        System.out.println(localDate);
//        System.out.println(localTime);
//        System.out.println(localDateTime);
//        System.out.println(date);
//
//        //時間加減
//        LocalTime localTime1 = localTime.plusHours(2);//增加兩個小時
//        String localDateTime1 = LocalDateTime.now().plusDays(2).format(dateTimeFormatter);//增加兩天
//        String localDateTime2 = LocalDateTime.now().minusDays(2).format(dateTimeFormatter);//減少兩天
//        System.out.println(localTime1);
//        System.out.println(localDateTime1);
//        System.out.println(localDateTime2);
//
//        //日期比較
//        LocalDateTime dt1 = LocalDateTime.now().plusDays(2);
//        LocalDateTime dt2 = LocalDateTime.now().minusDays(2);
//        boolean flag = dt1.isAfter(dt2);//dt1是否大於dt2
//        boolean flag1 = dt1.isBefore(dt2);//dt1是否大於dt2
//        boolean flag2 = dt1.isEqual(dt2);//dt1是否等於dt2
//        System.out.println(flag);
//        System.out.println(flag1);
//        System.out.println(flag2);
//    }

}

相關推薦

個人總結 | 個人轉載——Java時間工具

本文介紹兩個時間日期工具類的使用:1、Joda-time;2、Java8自帶的時間類。 兩者的使用都很方便,用法類似,少量程式碼就可以實現常用的功能,如:根據自定義格式獲取時間、時間加減、時間對比等。 具體看程式碼: 1. maven專案引入jar 包 <d

轉載java報表工具報表軟體選型經驗總結分享

本人研二學生一枚,計算機專業,主要學的語言是java,這學期跟著導師開始做專案了,導師比較牛,給各個行業都做過很多專案,在學校和業內口碑都非常不錯。 進入專案第一天,導師就給安排了任務--調研報表工具。至於為啥要調研工具,導師說是因為最近的專案裡開始報表畫的比較多了,再不能

轉載java的常見型轉換

ima hour parse ear nbsp 可能 ont 文章 getclass //Int型數字轉換成String int num1=123456; //方法1 String str1=num1+"";

MongoDb學習之路Java利用MongoClient連線MongoDB資料庫

專案需要 mongo-java-driver-3.0.2 .jar  【重點看加粗字型,方法體中註釋的都是系統連線引數】 package cn.com.mongodb; import com.mongodb.DB; import com.mongodb.DBColl

開源Java時間工具Joda-Time體驗

java import org.joda.time.*; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import org.junit.Test; import java

202.常用java時間工具

1. 效果     2. 工具類 package ipi.common.utils; import java.text.Format; import java.text.ParseException; import java.text.SimpleDa

Java時間工具

廢話不說,直接上程式碼:    /**      * 獲取過去第幾天的日期       */       public static Date getPastDate(Date date, int past) {                      Calendar

Java時間工具(把日期時間轉換成xx秒前、xx分鐘前、xx小時前...)

package com.liuzy.javaopen.entity; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;

轉載JAVA中IO流操作的基本規律總結

reader 對象 作文 若是 gpo 是否 目的 io流 基本 流操作的基本規律:三個明確 1.明確源和目的; 源:輸入流即讀取流 InputStream,Reader 目的:輸出流即寫入流 OutputStream, Writer 2.明確操作的數據是

轉載Java IO基礎總結

stream name lse rect block 文件操作 讀數 pla ex18 Java中使用IO(輸入輸出)來讀取和寫入,讀寫設備上的數據、硬盤文件、內存、鍵盤......,根據數據的走向可分為輸入流和輸出流,這個走向是以內存為基準的,即往內存中讀

約瑟夫環Java實現:100個人開始從1開始報數,每當報數到3,報數3的人離開,求最後留下來人的位置。

問題背景:約瑟夫環問題  在這裡寫一個簡單的約瑟夫環的問題:100個人坐成一圈開始從1開始報數,每個報數為3的人離開座位,直到座位上只剩下一個人,求這個人的位置。 解決問題使用的工具&程式語言:  工具:Eclipse  程式設計:Java 程式碼如下: public class Yuesef

轉載Java中Comparable和Comparator比較

import 比較器 todo itl 復制代碼 ack div array open 【本文轉自】http://www.cnblogs.com/skywang12345/p/3324788.html Comparable 簡介 Comparable 是排序接口。 若一

轉載JAVA多線程讀取、操作List集合

線程 nbsp static 一點 stat lang 素數 param 應用 本文轉載自:http://blog.csdn.net/wang1989cs/article/details/47663565 import java.util.ArrayList; impor

轉載java 客戶端鏈接不上redis解決方案 (jedis)

主機 rom number table 出現 gin 現在 start http 本文出自:http://blog.csdn.net/lulidaitian/article/details/51946169 出現問題描述: 1.Could not get a resou

轉載java 獲取路徑的各種方法

strong filepath 文件路徑 etc dex 讀取 workspace for class 轉載只供個人學習參考,查看請前往原出處:http://www.cnblogs.com/guoyuqiangf8/p/3506768.html 主要方法有: (1)、req

轉載Java DecimalFormat 用法

最快 public oid get div 科學計數 科學 符號 一個 轉載只供個人學習參考,以下查看請前往原出處:http://blog.csdn.net/wangchangshuai0010/article/details/8577982 我們經常要將數字進行格式化,比

轉載JAVA學習路線二

get rocket 原理 aop 二次 三次握手 active AD cpu JAVA學習路線二------------高階面試 作者:Java高級進階鏈接:https://zhuanlan.zhihu.com/p/35301291來源:知乎著作權歸作者所有。商業轉載請聯

轉載JAVA字符串格式化-String.format()的使用

對數 print 英文月份 兩種 local 之前 width 標記 散列碼 常規類型的格式化 String類的format()方法用於創建格式化的字符串以及連接多個字符串對象。熟悉C語言的同學應該記得C語言的sprintf()方法,兩者有類似之處。format()方法有兩

轉載Java基本型別的Writable封裝

Java基本型別的Writable封裝 目前Java基本型別對應的Writable封裝如表所示 所有這些Writable類都繼承自WritableComparable。也就是說,它們是可比較的。 同時,它們都有get()和set()方法,用於獲得和設定封裝的值。 對整形(int和long

轉載Java 中帶參無返回、帶參帶返回值、方法的重載

語法 ble 數組 實現 執行 愛慕 包含 參數 com 一、 有時方法的執行需要依賴於某些條件,換句話說,要想通過方法完成特定的功能,需要為其提供額外的信息才行。例如,現實生活中電飯鍋可以實現“煮飯”的功能,但前提是我們必須提供食材,如果我們什麽都不提供,那就真是的“巧婦