java如何判斷Date是上午還是下午
java判斷Date是上午還是下午
我要用Java生成表格統(tǒng)計信息,如下圖所示:
所以就誕生了本文的內(nèi)容。
在 Java 里,判斷 Date
對象代表的時間是上午還是下午有多種方式,下面為你詳細介紹不同的實現(xiàn)方法。
方式一:使用 java.util.Calendar
Calendar
類可以用來獲取 Date
對象中的各個時間字段,通過 HOUR_OF_DAY
字段能判斷是上午還是下午。
import java.util.Calendar; import java.util.Date; public class DateAmPmCheckWithCalendar { public static void main(String[] args) { // 創(chuàng)建一個 Date 對象 Date currentDate = new Date(); // 獲取 Calendar 實例,并將 Date 對象設置進去 Calendar calendar = Calendar.getInstance(); calendar.setTime(currentDate); // 獲取 24 小時制的小時數(shù) int hour = calendar.get(Calendar.HOUR_OF_DAY); if (hour < 12) { System.out.println("上午"); } else { System.out.println("下午"); } } }
代碼解釋:
- 首先創(chuàng)建了一個
Date
對象currentDate
表示當前時間。 - 接著獲取
Calendar
實例,并使用setTime
方法將currentDate
設置進去。 - 通過
get(Calendar.HOUR_OF_DAY)
獲取 24 小時制的小時數(shù)。 - 根據(jù)小時數(shù)是否小于 12 判斷是上午還是下午。
方式二:使用 java.time 包(Java 8 及以后)
Java 8 引入的 java.time
包提供了更簡潔和強大的日期時間處理功能。
可以將 Date
轉(zhuǎn)換為 ZonedDateTime
再進行判斷。
import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; public class DateAmPmCheckWithJavaTime { public static void main(String[] args) { // 創(chuàng)建一個 Date 對象 Date currentDate = new Date(); // 將 Date 轉(zhuǎn)換為 ZonedDateTime ZonedDateTime zonedDateTime = currentDate.toInstant().atZone(ZoneId.systemDefault()); // 獲取 24 小時制的小時數(shù) int hour = zonedDateTime.getHour(); if (hour < 12) { System.out.println("上午"); } else { System.out.println("下午"); } } }
代碼解釋:
- 創(chuàng)建
Date
對象currentDate
。 - 使用
toInstant()
方法將Date
轉(zhuǎn)換為Instant
,再通過atZone(ZoneId.systemDefault())
轉(zhuǎn)換為ZonedDateTime
。 - 調(diào)用
getHour()
方法獲取 24 小時制的小時數(shù)。 - 根據(jù)小時數(shù)判斷是上午還是下午。
方式三:使用 SimpleDateFormat 格式化輸出判斷
可以使用 SimpleDateFormat
將 Date
格式化為包含上午/下午標識的字符串,然后進行判斷。
import java.text.SimpleDateFormat; import java.util.Date; public class DateAmPmCheckWithFormat { public static void main(String[] args) { // 創(chuàng)建一個 Date 對象 Date currentDate = new Date(); // 定義日期格式,使用 "a" 表示上午/下午標識 SimpleDateFormat sdf = new SimpleDateFormat("a"); // 格式化日期 String amPm = sdf.format(currentDate); if ("上午".equals(amPm)) { System.out.println("上午"); } else { System.out.println("下午"); } } }
代碼解釋:
- 創(chuàng)建
Date
對象currentDate
。 - 創(chuàng)建
SimpleDateFormat
對象,指定格式為"a"
,它會輸出上午
或下午
。 - 使用
format
方法將Date
格式化為字符串。 - 通過比較字符串判斷是上午還是下午。這種方式的語言顯示受系統(tǒng)默認語言環(huán)境影響。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot使用CommandLineRunner接口完成資源初始化方式
這篇文章主要介紹了SpringBoot使用CommandLineRunner接口完成資源初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Java并發(fā)Futures和Callables類實例詳解
Callable對象返回Future對象,該對象提供監(jiān)視線程執(zhí)行的任務進度的方法, Future對象可用于檢查Callable的狀態(tài),然后線程完成后從Callable中檢索結(jié)果,這篇文章給大家介紹Java并發(fā)Futures和Callables類的相關(guān)知識,感興趣的朋友一起看看吧2024-05-05java的Jackson將json字符串轉(zhuǎn)換成泛型List
這篇文章主要介紹了java的Jackson將json字符串轉(zhuǎn)換成泛型List ,這里整理了詳細的代碼,有需要的小伙伴可以參考下。2017-02-02