Hutool日期時間

一.日期時間工具-DateUtil

1.static int age(Date birthday, Date dateToCompare):計算相對於dateToCompare的年齡,常用於計算指定生日在某年的年齡

int age = DateUtil.age(DateUtil.parse("1995-06-08 02:30:00"), DateUtil.parse("2022-07-28 26:30:00"));//輸出結果爲27

2.static int ageOfNow(Date birthDay):生日轉爲年齡,計算法定年齡

int age1 = DateUtil.ageOfNow(DateUtil.parse("1995-06-08 02:30:00"));//輸出結果爲27

3.static int ageOfNow(String birthDay):生日轉爲年齡,計算法定年齡

int age2 = DateUtil.ageOfNow("1995-06-08 02:30:00");//輸出結果爲27

4.

public static void main(String[] args) {
        DateTime parse1 = DateUtil.parse("2022-8-25 02:30:00");
        DateTime parse2 = DateUtil.parse("2023-8-24 14:30:50");
        DateTime dateTime = DateUtil.beginOfDay(parse1);//獲取某天的開始時間
        DateTime dateTime1 = DateUtil.beginOfHour(parse1);//獲取某小時的開始時間
        DateTime dateTime2 = DateUtil.beginOfMinute(parse1);//獲取某分鐘的開始時間
        DateTime dateTime3 = DateUtil.beginOfMonth(parse1);//獲取某月的開始時間
        DateTime dateTime4 = DateUtil.beginOfQuarter(parse1);//獲取某季度的開始時間
        DateTime dateTime5 = DateUtil.beginOfSecond(parse1);//獲取秒級別的開始時間,即毫秒部分設置爲0
        DateTime dateTime6 = DateUtil.beginOfWeek(parse1);//獲取某周的開始時間,週一定爲一週的開始時間
        DateTime dateTime7 = DateUtil.beginOfWeek(parse1, true);//獲取某周的開始時間,週一爲一週的開始時間
        DateTime dateTime8 = DateUtil.beginOfWeek(parse1, false);//獲取某周的開始時間,週日爲一週的開始時間
        DateTime dateTime9 = DateUtil.beginOfYear(parse1);//獲取某年的開始時間
        long between = DateUtil.between(parse1, parse2, DateUnit.DAY);//判斷兩個日期相差的時長,只保留絕對值,unit - 相差的單位:相差 天DateUnit.DAY、小時DateUnit.HOUR 等
        long between1 = DateUtil.between(parse1, parse2, DateUnit.DAY, false);//判斷兩個日期相差的時長
        long between2 = DateUtil.betweenDay(parse1, parse2, false);//判斷兩個日期相差的天數
        long between3 = DateUtil.betweenMonth(parse1, parse2, false);//計算兩個日期相差月數,在非重置情況下,如果起始日期的天大於結束日期的天,月數要少算1(不足1個月)
        long between4 = DateUtil.betweenMs(parse1, parse2);//判斷兩個日期相差的毫秒數
        long between5 = DateUtil.betweenWeek(parse1, parse2, false);//計算指定時間區間內的週數
        long between6 = DateUtil.betweenYear(parse1, parse2, false);//計算兩個日期相差年數,在非重置情況下,如果起始日期的月大於結束日期的月,年數要少算1(不足1年)
        DateTime ceiling = DateUtil.ceiling(parse1, DateField.DAY_OF_MONTH);//修改日期爲某個時間字段結束時間
        int compare = DateUtil.compare(parse1, parse2);//null安全的日期比較,null對象排在末尾
        StopWatch stopWatch = DateUtil.createStopWatch();//創建秒錶StopWatch,用於對代碼塊的執行時間計數
        long current = DateUtil.current();//當前時間的時間戳
        long currentSecond = DateUtil.currentSeconds();//當前時間的時間戳(秒)
        DateTime date = DateUtil.date();//當前時間,轉換爲DateTime對象
        DateTime date1 = DateUtil.date(Calendar.getInstance());//Calendar類型時間轉爲DateTime
        DateTime date2 = DateUtil.date(new Date());//Date類型時間轉爲DateTime
        DateTime date3 = DateUtil.date(1659001318084L);//Long類型時間轉爲DateTime,只支持毫秒級別時間戳,如果需要秒級別時間戳,請自行×1000
        DateTime dateTime10 = DateUtil.dateNew(new Date());//根據已有Date 產生新的DateTime對象
        DateTime dateTime11 = DateUtil.dateSecond();//當前時間,轉換爲DateTime對象,忽略毫秒部分
        int i = DateUtil.dayOfMonth(parse1);//獲得指定日期是這個日期所在月份的第幾天
        int i1 = DateUtil.dayOfWeek(parse1);//獲得指定日期是星期幾,1表示週日,2表示週一
        Week week = DateUtil.dayOfWeekEnum(parse1);//獲得指定日期是星期幾
        int i2 = DateUtil.dayOfYear(parse1);//獲得指定日期是這個日期所在年的第幾天
        DateTime dateTime12 = DateUtil.endOfDay(parse1);//獲取某天的結束時間
        DateTime dateTime13 = DateUtil.endOfHour(parse1);//獲取某小時的結束時間
        DateTime dateTime14 = DateUtil.endOfMinute(parse1);//獲取某分鐘的結束時間
        DateTime dateTime15 = DateUtil.endOfMonth(parse1);//獲取某月的結束時間
        DateTime dateTime16 = DateUtil.endOfQuarter(parse1);//獲取某季度的結束時間
        DateTime dateTime17 = DateUtil.endOfSecond(parse1);//獲取秒級別的結束時間,即毫秒設置爲999
        DateTime dateTime18 = DateUtil.endOfWeek(parse1);//獲取某周的結束時間,週日定爲一週的結束
        DateTime dateTime19 = DateUtil.endOfWeek(parse1, true);//獲取某周的結束時間
        DateTime dateTime20 = DateUtil.endOfYear(parse1);//獲取某年的結束時間
        String format = DateUtil.format(parse1, "yyyy-MM-dd HH:mm:ss");//根據特定格式格式化日期
        String s4 = DateUtil.formatDate(parse1);//格式化日期部分
        String s5 = DateUtil.formatDateTime(parse1);//格式化日期時間,格式 yyyy-MM-dd HH:mm:ss
        String s6 = DateUtil.formatTime(parse1);//格式化時間,格式 HH:mm:ss
        String s = DateUtil.formatBetween(parse1, parse2);//格式化日期間隔輸出,精確到毫秒
        String s1 = DateUtil.formatBetween(parse1, parse2, BetweenFormatter.Level.HOUR);//格式化日期間隔輸出
        String s2 = DateUtil.formatBetween(1659001318084L);//格式化日期間隔輸出,精確到毫秒
        String s3 = DateUtil.formatBetween(1659001318084L, BetweenFormatter.Level.HOUR);//格式化日期間隔輸出
        String chineseZodiac = DateUtil.getChineseZodiac(1995);//計算生肖,只計算1900年後出生的人
        int hour = DateUtil.hour(parse1, true);//獲得指定日期的小時數部分
        boolean in = DateUtil.isIn(DateUtil.date(), parse1, parse2);//當前日期是否在日期指定範圍內
        boolean leapYear = DateUtil.isLeapYear(1995);//是否閏年
        boolean sameDay = DateUtil.isSameDay(parse1, parse2);//比較兩個日期是否爲同一天
        boolean sameMonth = DateUtil.isSameMonth(parse1, parse2);//比較兩個日期是否爲同一月
        boolean sameTime = DateUtil.isSameTime(parse1, parse2);//是否爲相同時間
        DateTime dateTime21 = DateUtil.lastMonth();//上個月
        DateTime dateTime22 = DateUtil.lastWeek();//上週
        int i3 = DateUtil.lengthOfMonth(6, false);//獲得指定月份的總天數
        int i4 = DateUtil.lengthOfYear(2022);//獲得指定年份的總天數
        int millisecond = DateUtil.millisecond(parse1);//獲得指定日期的毫秒數部分
        int minute = DateUtil.minute(parse1);//獲得指定日期的分鐘數部分
        int month = DateUtil.month(parse1);//獲得月份,從0開始計數
        Month month1 = DateUtil.monthEnum(parse1);//獲得月份
        DateTime dateTime23 = DateUtil.nextMonth();//下個月
        DateTime dateTime24 = DateUtil.nextWeek();//下週
        String now = DateUtil.now();//當前時間,格式 yyyy-MM-dd HH:mm:ss
        DateTime offset = DateUtil.offset(parse1, DateField.MONTH, 1);//獲取指定日期偏移指定時間後的時間,生成的偏移日期不影響原日期
        DateTime dateTime25 = DateUtil.offsetDay(parse1, 1);//偏移天
        DateTime dateTime26 = DateUtil.offsetHour(parse1, 1);//偏移小時
        DateTime dateTime27 = DateUtil.offsetMillisecond(parse1, 1);//偏移毫秒數
        DateTime dateTime28 = DateUtil.offsetMinute(parse1, 1);//偏移分鐘
        DateTime dateTime29 = DateUtil.offsetMonth(parse1, 1);//偏移月
        DateTime dateTime30 = DateUtil.offsetSecond(parse1, 1);//偏移秒數
        DateTime dateTime31 = DateUtil.offsetWeek(parse1, 1);//偏移周
        DateTime parse3 = DateUtil.parse("2022-07-28 18:42:20");//將日期字符串轉換爲DateTime對象,格式:yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH時mm分ss秒 yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd HH:mm:ss HH時mm分ss秒 yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss.SSS yyyy-MM-dd HH:mm:ss.SSSSSS yyyyMMddHHmmss yyyyMMddHHmmssSSS yyyyMMdd EEE, dd MMM yyyy HH:mm:ss z EEE MMM dd HH:mm:ss zzz yyyy yyyy-MM-dd'T'HH:mm:ss'Z' yyyy-MM-dd'T'HH:mm:ss.SSS'Z' yyyy-MM-dd'T'HH:mm:ssZ yyyy-MM-dd'T'HH:mm:ss.SSSZ
        DateTime parse4 = DateUtil.parse("2022-07-28 18:42:20", "yyyy-MM-dd");//將特定格式的日期轉換爲Date對象
        int second = DateUtil.second(parse1);//獲得指定日期的秒數部分
        String s7 = DateUtil.secondToTime(3600);//秒數轉爲時間格式(HH:mm:ss)
        int i5 = DateUtil.timeToSecond("18:48:20");//HH:mm:ss 時間格式字符串轉爲秒數
        String today = DateUtil.today();//當前日期,格式 yyyy-MM-dd
        int i6 = DateUtil.weekOfMonth(parse1);//獲得指定日期是所在月份的第幾周
        int i7 = DateUtil.weekOfYear(parse1);//獲得指定日期是所在年份的第幾周
        int year = DateUtil.year(parse1);//獲得年的部分
        DateTime yesterday = DateUtil.yesterday();//昨天
    }

 

二.日期時間對象-DateTime

 

public static void main(String[] args) {
        DateTime parse1 = DateUtil.parse("2022-8-25 02:30:00");
        DateTime parse2 = DateUtil.parse("2023-8-24 14:30:50");
        DateTime dateTime = new DateTime("2022-07-29 08:30:00");
        long between = dateTime.between(DateUtil.date(), DateUnit.MINUTE);//計算相差時長
        int i = dateTime.dayOfMonth();//獲得指定日期是這個日期所在月份的第幾天,從1開始
        int i1 = dateTime.dayOfWeek();//獲得指定日期是星期幾,1表示週日,2表示週一
        Week week = dateTime.dayOfWeekEnum();//獲得指定日期是星期幾
        int i2 = dateTime.dayOfWeekInMonth();//獲得天所在的周是這個月的第幾周
        int i3 = dateTime.dayOfYear();//獲得指定日期是這個日期所在年份的第幾天,從1開始
        int field = dateTime.getField(DateField.YEAR);//獲得日期的某個部分
        int field1 = dateTime.getField(Calendar.YEAR);//獲得日期的某個部分
        Week firstDayOfWeek = dateTime.getFirstDayOfWeek();//獲得一週的第一天,默認爲週一
        TimeZone timeZone = dateTime.getTimeZone();//獲取時區
        ZoneId zoneId = dateTime.getZoneId();//獲取時區ID
        int hour = dateTime.hour(true);//獲得指定日期的小時數部分
        boolean after = dateTime.isAfter(DateUtil.date());//是否在給定日期之後
        boolean afterOrEquals = dateTime.isAfterOrEquals(DateUtil.date());//是否在給定日期之後或與給定日期相等
        boolean am = dateTime.isAM();//是否爲上午
        boolean before = dateTime.isBefore(DateUtil.date());//是否在給定日期之前
        boolean beforeOrEquals = dateTime.isBeforeOrEquals(DateUtil.date());//是否在給定日期之前或與給定日期相等
        boolean in = dateTime.isIn(parse1, parse2);//當前日期是否在日期指定範圍內
        boolean leapYear = dateTime.isLeapYear();//是否閏年
        boolean pm = dateTime.isPM();//是否爲下午
        boolean weekend = dateTime.isWeekend();//是否爲週末,週末指週六或者週日
        int millisecond = dateTime.millisecond();//獲得指定日期的毫秒數部分
        int minute = dateTime.minute();//獲得指定日期的分鐘數部分
        int month = dateTime.month();//獲得月份,從0開始計數
        int i4 = dateTime.monthBaseOne();//獲取月,從1開始計數
        Month month1 = dateTime.monthEnum();//獲得月份
        int i5 = dateTime.monthStartFromOne();//獲得月份,從1開始計數
        int quarter = dateTime.quarter();//獲得當前日期所屬季度,從1開始計數
        Quarter quarter1 = dateTime.quarterEnum();//獲得當前日期所屬季度
        int second = dateTime.second();//獲得指定日期的秒數部分
        String s = dateTime.toDateStr();//轉爲"yyyy-MM-dd" 格式字符串
        String s1 = dateTime.toString();//轉爲字符串
        String s2 = dateTime.toString("yyyy-MM-dd");//轉爲字符串
        String s3 = dateTime.toTimeStr();//轉爲"HH:mm:ss" 格式字符串
        int i6 = dateTime.weekOfMonth();//獲得指定日期是所在月份的第幾周
        int i7 = dateTime.weekOfYear();//獲得指定日期是所在年份的第幾周
        int year = dateTime.year();//獲得年的部分
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章