前言
介紹了三種日期類型以及他們的日期加減
什么是LocalDateTime
LocalDateTime是Java 8中的一個類,表示不帶時區(qū)的日期和時間。它是java.time包中的一個類,用于處理日期和時間的操作。
LocalDateTime包含日期和時間的信息,不包含時區(qū)信息。它提供了各種方法來獲取和操作日期和時間的各個部分,例如年、月、日、時、分、秒等。
與其他日期和時間類相比,LocalDateTime主要用于處理本地日期和時間的操作。它適合用于應(yīng)用程序中不涉及時區(qū)轉(zhuǎn)換的場景,例如計算兩個日期之間的間隔、格式化日期和時間等。
什么是Calendar
在Java中,Calendar是一個用于處理日期和時間的類。它提供了許多方法來獲取和設(shè)置日期、時間以及執(zhí)行日期和時間的計算操作。使用Calendar類,可以執(zhí)行各種常見的日期和時間操作,如獲取當(dāng)前日期和時間、計算兩個日期之間的差異、添加或減去指定數(shù)量的年、月、日、小時、分鐘等等。
Calendar類是一個抽象類,通過調(diào)用其靜態(tài)方法getInstance()來獲取一個Calendar對象的實例??梢允褂肅alendar對象來獲取和設(shè)置年、月、日、小時、分鐘、秒等日期和時間的具體值。此外,Calendar類還提供了一些方便的方法來執(zhí)行日期和時間的計算、比較和格式化等操作。
什么是Date
在Java中,Date是表示日期和時間的類。它是Java提供的最早的日期和時間類之一,用于表示從1970年1月1日 00:00:00 GMT(格林尼治標(biāo)準(zhǔn)時間)開始經(jīng)過的毫秒數(shù)。
Date類可以用于獲取和設(shè)置日期和時間的值,執(zhí)行日期和時間的計算和比較操作。它提供了多個構(gòu)造方法,可以根據(jù)傳入的參數(shù)來創(chuàng)建Date對象,包括指定年、月、日、小時、分鐘、秒數(shù)等等。
LocalDateTime類型加減
在Java中,我們可以使用LocalDateTime類型進(jìn)行加減操作。具體操作如下:
- 加法操作:
我們可以使用plusXXX()
方法進(jìn)行加法操作,在方法中傳入一個時間量Duration或者Period。
例如:
LocalDateTime now = LocalDateTime.now(); //默認(rèn)當(dāng)前時間
LocalDateTime after = now.plusDays(1); // 加1天
LocalDateTime before = now.plusHours(-3); // 減3小時
System.out.println(after);
System.out.println(before);
結(jié)果:
- 減法操作:
我們可以使用minusXXX()
方法進(jìn)行減法操作,在方法中傳入一個時間量Duration或者Period。
例如:
LocalDateTime now = LocalDateTime.now(); //默認(rèn)當(dāng)前時間
LocalDateTime before = now.minusDays(1); // 減1天
LocalDateTime after = now.minusHours(-3); // 減3小時
System.out.println(before);
System.out.println(after);
結(jié)果:
值得注意的是,plusXXX()
和minusXXX()
方法會返回一個新的LocalDateTime對象,原有的對象并不會被修改。因此,我們需要將新的對象保存起來或者直接使用它。
需要注意的一點是,Period
和Duration
是不同的時間量單位。Period
是以年、月、日的方式表示時間間隔,而Duration
是以秒、毫秒、納秒等為單位表示時間間隔。因此,在使用plusXXX()
和minusXXX()
方法的時候,需要根據(jù)具體情況選擇合適的時間量類型。
Calendar加減
在Java中,我們可以使用Calendar
類型進(jìn)行加減操作。具體操作如下:
- 加法操作:
我們可以使用add()
方法進(jìn)行加法操作,在方法中傳入一個時間單位和該單位需要增加的數(shù)量。
例如:
Calendar cal = Calendar.getInstance(); //默認(rèn)當(dāng)前時間
cal.add(Calendar.DATE, 1); // 加1天
cal.add(Calendar.HOUR_OF_DAY, -3); // 減3小時 // 減3小時
System.out.println(cal.getTime());
結(jié)果:
- 減法操作:
我們可以使用add()
方法進(jìn)行減法操作,在方法中傳入一個時間單位和該單位需要減少的數(shù)量。需要注意的是,由于add()
方法沒有提供減法操作的直接實現(xiàn),因此需要傳入負(fù)數(shù)來實現(xiàn)減法操作。
例如:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1); // 減1天
cal.add(Calendar.HOUR_OF_DAY, 3); // 加3小時,實現(xiàn)減法操作需傳入負(fù)數(shù)-3
System.out.println(cal.getTime());
結(jié)果:
需要注意的一點是,由于Calendar
類型是線程不安全的,因此在多線程環(huán)境下使用時需要進(jìn)行同步操作,或者使用線程安全的ThreadLocal
來存儲Calendar
實例。
另外,從Java 8開始,建議使用java.time
包中的新型日期時間API(例如LocalDateTime
)來替代Calendar
類型,因為新型API更加易用、更加清晰,同時也更加符合現(xiàn)代編程的需求。
Date類型加減
在Java中,我們可以使用java.util.Date
類型進(jìn)行加減操作。但是需要注意的是,Date
類型存在一些缺陷和問題,例如時區(qū)不支持、可變性等問題。
因此,從Java 8開始,建議使用新型日期時間APIjava.time
中的LocalDate
、LocalTime
、LocalDateTime
等類型來替代Date
類型。
不過如果你仍然需要使用Date
類型進(jìn)行加減操作,可以按照以下步驟進(jìn)行:
- 通過
getTime()
方法將Date
類型轉(zhuǎn)換為毫秒數(shù),進(jìn)行加減操作:
Date date = new Date(); //默認(rèn)當(dāng)前時間
long time = date.getTime(); // 獲取毫秒數(shù)
time += 24 * 60 * 60 * 1000; // 加1天,單位為毫秒
date.setTime(time); // 將毫秒數(shù)轉(zhuǎn)換為Date類型
System.out.println(date);
結(jié)果:
- 通過
Calendar
類型進(jìn)行加減操作:
Date date = new Date(); //默認(rèn)當(dāng)前時間
Calendar cal = Calendar.getInstance();
cal.setTime(date); // 將Date類型轉(zhuǎn)換為Calendar類型
cal.add(Calendar.DATE, 1); // 加1天
date = cal.getTime(); // 將Calendar類型轉(zhuǎn)換為Date類型
System.out.println(date);
結(jié)果:
需要注意的一點是,由于Date
類型存在可變性的問題,不建議在多線程環(huán)境下進(jìn)行操作,可以考慮使用線程安全的ThreadLocal
來存儲Date
實例。同時,在Java 8之前的版本中,也可以考慮使用第三方日期時間庫Joda-Time
來替代Date
類型。文章來源:http://www.zghlxwxcb.cn/news/detail-762941.html
總結(jié)
- LocalDateTime是Java 8中的一個類,表示不帶時區(qū)的日期和時間。
- Calendar是一個用于處理日期和時間的類,它提供了許多方法來獲取和設(shè)置日期、時間以及執(zhí)行日期和時間的計算操作。
- Date是表示日期和時間的類。它是Java提供的最早的日期和時間類之一,用于表示從1970年1月1日 00:00:00 GMT(格林尼治標(biāo)準(zhǔn)時間)開始經(jīng)過的毫秒數(shù)。
日期的加減這就不用過多總結(jié)了,用法都是固定的。文章來源地址http://www.zghlxwxcb.cn/news/detail-762941.html
到了這里,關(guān)于java中LocalDateTime、Calendar、Date三種時間類型進(jìn)行加減的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!