Java基礎關鍵_013_日期處理

目? 錄

一、傳統 API

1.System.currentTimeMillis()

(1)說明

(2)實例

2.構造方法

(1)說明

(2)無參構造

(3)有參構造

3.日期格式化

(1)說明

(2)實例

4.日歷

(1)get() 與 getTime()

(2)set() 與 setTime()

二、全新 API

1.LocalDate、LocalTime、LocalDateTime

2.toEpochMilli 新時間戳

3.Duration 時間差

4.Period 日期差

5.TemporalAdjusters 時間矯正器

6.DateTimeFormatter 日期格式化


一、傳統 API

1.System.currentTimeMillis()

(1)說明

  1. 獲取自 1970年1月1日0時0分0秒到系統當前時間的總毫秒數;
  2. 1s (秒)?= 1000ms(毫秒);
  3. 1ms(毫秒)?= 1000μs(微秒);
  4. 1μs(微秒)?= 1000ns(納秒);
  5. 1ns (納秒)=?1000ps(皮秒)。

(2)實例

public class DateTest {public static void main(String[] args) {long time = System.currentTimeMillis();System.out.println(time);   // 1740723807436}
}

2.構造方法

(1)說明

????????此處是 java.util.Date ,而?java.sql.Date 是?java.util.Date 的子類。


(2)無參構造

public class DateTest {public static void main(String[] args) {// 獲取當前時間Date d1 = new Date();System.out.println(d1);   // Fri Feb 28 13:56:29 CST 2025}
}

(3)有參構造

public class DateTest {public static void main(String[] args) {// 獲取當前時間Date d1 = new Date(System.currentTimeMillis());System.out.println(d1);   // Fri Feb 28 14:02:24 CST 2025// 獲取指定時間Date d2 = new Date(3000);System.out.println(d2); // Thu Jan 01 08:00:03 CST 1970}
}

3.日期格式化

(1)說明

  1. 需要使用 java.text.SimpleDateFormat 類,其父類是?DateFormat ;
  2. 日期和時間格式由日期和時間模式字符串指定,模式字母如下表所示。

模式字母

符號日期或時間組件說明例子
G年號文本AD
y1996;?96
Y周 年2009;?09
M一年中的月份(上下文相關)July;?Jul;?07
L一年中的月份 (獨立形式)July;?Jul;?07
w一年中的周27
W每月的周2
D一年中的天189
d當月的日期10
F當月中的星期幾2
E星期名稱文本Tuesday;?Tue
u

星期數

(1 = 星期一,...,7 = 星期日)

1
a上午/下午標記文本PM
H一天中的小時 (0-23)0
k一天中的小時 (1-24)24
K上午 / 下午 (0-11) 小時數0
h上午 / 下午 (1-12)12
m分鐘(小時)30
s秒(分鐘)55
S毫秒978
z時區通用時區Pacific Standard Time;?PST;?GMT-08:00
Z時區RFC 822 時區-0800
X時區ISO 8601 時區-08;?-0800;?-08:00

(2)實例

public class DateTest {public static void main(String[] args) throws ParseException {Date d1 = new Date();System.out.println(d1);   // Fri Feb 28 14:29:31 CST 2025SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String format = sdf.format(d1);System.out.println(format); // 2025年02月28日 14:29:31String time = "2000年06月16日 08:08:08";Date d2 = sdf.parse(time);System.out.println(d2); // Fri Jun 16 08:08:08 CST 2000}
}

4.日歷

(1)get() 與 getTime()

public class DateTest {public static void main(String[] args) {Calendar calendar = Calendar.getInstance(); // 獲取當前時間的日歷對象,調用一個靜態方法System.out.println(calendar.getTime()); // 獲取當前時間System.out.println(calendar.get(Calendar.YEAR));    // 獲取年份System.out.println(calendar.get(Calendar.MONTH) + 1);   // 獲取月份,從0開始,需要加1System.out.println(calendar.get(Calendar.DAY_OF_MONTH));    // 獲取本月的第幾天System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 獲取星期,從1開始,1表示星期天System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 獲取本年的第幾天System.out.println(calendar.get(Calendar.HOUR));    // 獲取小時,12小時制System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 獲取小時,24小時制System.out.println(calendar.get(Calendar.MINUTE));  // 獲取分鐘System.out.println(calendar.get(Calendar.SECOND));  // 獲取秒System.out.println(calendar.get(Calendar.MILLISECOND)); // 獲取毫秒}
}

(2)set() 與 setTime()

public class DateTest {public static void main(String[] args) throws ParseException {/*** set()*/Calendar calendar = Calendar.getInstance(); // 獲取當前時間的日歷對象calendar.set(Calendar.YEAR, 1945);calendar.set(Calendar.MONTH, Calendar.SEPTEMBER);calendar.set(Calendar.DAY_OF_MONTH, 15);System.out.println("日本無條件投降:" + calendar.get(Calendar.YEAR) + "年" + calendar.get(Calendar.MONTH) + "月" + calendar.get(Calendar.DAY_OF_MONTH) + "日"); // 日本無條件投降:1945年8月15日calendar.set(2020, Calendar.JANUARY, 1, 8, 8, 8);System.out.println(calendar.getTime()); // Wed Jan 01 08:08:08 CST 2020/*** setTime()*/String time = "2022-02-24";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(time);calendar.setTime(date);System.out.println(calendar.getTime()); // Thu Feb 24 00:00:00 CST 2022}
}

二、全新 API

? ? ? ? 由于傳統 API 存在線程安全問題,jdk 8 提供了一套全新 API ,在 java.time 包下。

1.LocalDate、LocalTime、LocalDateTime

public class DateTest {public static void main(String[] args) throws ParseException {System.out.println("【獲取系統當前日期時間】");System.out.println(LocalDate.now());    // 2025-02-28System.out.println(LocalTime.now());    // 17:19:21.671997600System.out.println(LocalDateTime.now());    // 2025-02-28T17:19:21 .671997600System.out.println("==================================");System.out.println("【獲取指定日期時間】");System.out.println(LocalDate.of(2000, 1, 1));System.out.println(LocalTime.of(8, 16, 26, 36));System.out.println("==================================");System.out.println("【加日期時間】");System.out.println(LocalDateTime.now().plusYears(3).plusMonths(3).plusDays(1));System.out.println("==================================");System.out.println("【減日期時間】");System.out.println(LocalDateTime.now().minusYears(3).minusMonths(3).minusDays(1));}
}

2.toEpochMilli 新時間戳

public class DateTest {public static void main(String[] args) throws ParseException {// UTC 時間戳Instant now = Instant.now();System.out.println(now);    // 2025-02-28T10:38:03.122192700ZSystem.out.println("時間戳:" + now.toEpochMilli());    // 時間戳:1740739083122}
}

3.Duration 時間差

public class DateTest {public static void main(String[] args) throws ParseException {LocalDateTime ldt1 = LocalDateTime.of(2019, 12, 12, 0, 0, 0);LocalDateTime ldt2 = LocalDateTime.now();Duration between = Duration.between(ldt1, ldt2);System.out.println("距離新冠肺炎爆發已經:" + between.toDays() + "天"); // 距離新冠肺炎爆發已經:1905天System.out.println("距離新冠肺炎爆發已經:" + between.toHours() + "小時");   // 距離新冠肺炎爆發已經:45738小時System.out.println("距離新冠肺炎爆發已經:" + between.toMinutes() + "分鐘"); // 距離新冠肺炎爆發已經:2744326分鐘System.out.println("距離新冠肺炎爆發已經:" + between.toMillis() + "毫秒");  // 距離新冠肺炎爆發已經:164659582897毫秒}
}

4.Period 日期差

public class DateTest {public static void main(String[] args) throws ParseException {LocalDate ld1 = LocalDate.of(2019, 12, 12);LocalDate ld2 = LocalDate.now();Period between = Period.between(ld1, ld2);System.out.println("距離新冠病毒爆發已經過去:" + between.getYears() + "年" + between.getMonths() + "月" + between.getDays() + "天");   // 距離新冠病毒爆發已經過去:5年2月16天}
}

5.TemporalAdjusters 時間矯正器

public class DateTest {public static void main(String[] args) throws ParseException {LocalDateTime ldt = LocalDateTime.now();System.out.println(ldt);    // 2025-02-28T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.firstDayOfYear()));   // 2025-01-01T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.lastDayOfYear()));    // 2025-12-31T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.firstDayOfMonth()));  // 2025-02-01T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.lastDayOfMonth()));   // 2025-02-28T20:25:50.585827System.out.println(ldt.with(TemporalAdjusters.next(DayOfWeek.MONDAY))); // 2025-03-03T20:25:50.585827}
}

6.DateTimeFormatter 日期格式化

public class DateTest {public static void main(String[] args) throws ParseException {LocalDateTime ldt = LocalDateTime.now();DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");System.out.println(dtf.format(ldt));    // 2025年02月28日 20:33:55LocalDateTime ldt1 = LocalDateTime.parse("2020年01月01日 08:08:08", dtf);System.out.println(ldt1);   // 2020-01-01T08:08:08}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70912.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70912.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70912.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

51單片機中reg52.h與regx52.h在進行位操作時的不同

reg52.h中不能使用例如 P2_0;這樣的定義 而只能使用 P2^0;這樣的定義 但是都不可以對位進行直接賦值操作; 而 regx52.h中可以使用 P2_0和P2^0;但是只有使用下劃線的才可以對位進行賦值操作 例如P2_0 1; 但不可以是P2^0 1; 在 C 語言中,…

基于Rook的Ceph云原生存儲部署與實踐指南(上)

#作者:任少近 文章目錄 1 Ceph環境準備2 rook部署ceph群集2.1 Rook 幫助地址2.2 安裝ceph2.3 獲取csi鏡像2.4 Master參加到osd2.5 設置默認存儲 3 Rook部署云原生RBD塊存儲3.1 部署storageclass資源3.2 部署WordPress使用RBD3.3 WordPress訪問 4 Rook部署云原生RGW…

FastExcel與Reactor響應式編程深度集成技術解析

一、技術融合背景與核心價值 在2025年企業級應用開發中,大規模異步Excel處理與響應式系統架構的結合已成為技術剛需。FastExcel與Reactor的整合方案,通過以下技術協同實現突破性性能: 內存效率革命:FastExcel的流式字節操作與Re…

DeepSeek R1/V3滿血版——在線體驗與API調用

前言:在人工智能的大模型發展進程中,每一次新模型的亮相都宛如一顆投入湖面的石子,激起層層波瀾。如今,DeepSeek R1/V3 滿血版強勢登場,為大模型應用領域帶來了全新的活力與變革。 本文不但介紹在線體驗 DeepSeek R1/…

Spring Data JPA 中的分頁實現:從 BasePage 到 Pageable

文章目錄 Spring Data JPA 中的分頁實現:從 BasePage 到 Pageable背景:為什么需要分頁?認識 BasePage 類深入 toPageable() 方法1. 處理頁碼和頁面大小2. 處理排序方向3. 處理排序字段4. 生成 Pageable 對象 實戰:如何使用 BasePa…

Android Studio 新版本Gradle發布本地Maven倉庫示例

發布代碼到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967 以下是基于 Android Studio 24.2.2(Gradle 8.10.2 AGP 8.8.0 JDK17) 的本地 Maven 倉庫發布示例,包含aar和jar的不同配置: 1.…

python量化交易——金融數據管理最佳實踐——qteasy創建本地數據源

文章目錄 qteasy金融歷史數據管理總體介紹本地數據源——DataSource對象默認數據源查看數據表查看數據源的整體信息最重要的數據表其他的數據表 從數據表中獲取數據向數據表中添加數據刪除數據表 —— 請盡量小心,刪除后無法恢復!!總結 qteas…

Android中使用Robolectric測試點擊事件(不需要手機)

文章目錄 一、前言二、簡單示例三、參考文檔 一、前言 Robolectric 是一個由 Google 維護的開源 Android 測試框架,它允許你以 Android 運行時環境運行單元測試。 Robolectric 提供了一個模擬 Android 運行時環境,允許你測試你的代碼是否正確地使用 And…

Spring Boot 接口 JSON 序列化優化:忽略 Null 值的九種解決方案詳解

一、針對特定接口null的處理: 方法一:使用 JsonInclude 注解 1.1 類級別:在接口返回的 ?DTO 類或字段? 上添加 JsonInclude 注解,強制忽略 null 值: 類級別:所有字段為 null 時不返回 JsonInclude(Js…

ds回答-開源llm應用開發平臺

以下是幾個著名的開源 LLM 應用開發平臺,涵蓋不同場景和技術特點: 1. Dify 特點:低代碼 / 無代碼開發、支持 RAG 檢索、Agent 智能體、模型管理、LLMOps 全流程優化。核心功能:可視化工作流編排、數百種模型兼容(如 GP…

LDR6020 PD3.1 協議芯片在特定設備中的應用

在電子設備互聯互通的時代,芯片技術成為提升設備性能與功能的關鍵驅動力。LDR6020 PD3.1 協議芯片以其出色的性能,在 TYPE-C 臺式顯示器 / 便攜顯示器、一拖二快充線以及手機電腦轉接器等設備中展現出獨特價值,為用戶帶來更便捷、高效的使用體…

wzl-django學習

####################################################總的urls.py from django.contrib import admin from django.urls import path,include, re_path from django.views.static import serve from django.conf import settings from drf_yasg import openapi from drf_yas…

python -ssh學習

def exe_sshcmd(ip,username,userpswd,port,cmd): """ 功能:SSH登錄到指定設備,并執行對應的命令 入參:前四項為ssh登錄shell的ip和port,具備管理員權限的用戶名和密碼, cmd可以…

PDF處理控件Aspose.PDF教程:使用 Python 將 PDF 轉換為 TIFF

TIFF文件是高質量圖像的首選。它們廣泛用于印刷、存檔和圖形設計。企業通常需要轉換PDF文檔以獲得更好的兼容性。了解如何以編程方式執行此轉換可以節省時間和資源。在這篇教程中,我們將探討如何使用 Python 將 PDF 轉換為 TIFF。 本文涵蓋以下主題: P…

服務器IPMI用戶名、密碼批量檢查

背景 大規模服務器部署的時候,少不了較多的網管和監測平臺,這些平臺會去監控服務器的性能、硬件等指標參數,為了便于管理和控制,則需要給服務器IPMI帶外管理添加較多的用戶,這就需要對較多的服務器檢查所對應的IPMI用…

< 自用文兒 > Gobuster 暴力掃描工具與 SecLists 安全測試詞表集合

Ethice 道德問題 GFW 的保護下,很多的設備操作系統是停留在更老的版本,應用軟件也是,因此很多的漏洞沒有被修復。通訊沒有使用加密,例如網頁沒有使用 HTTPS 網站很多。幾乎是半裸的在網絡上等著被食。 不做惡是下限。 環境&…

【Cadence射頻仿真學習筆記】2.4GHz低噪放LNA仿真設計

課程分為3個部分, 一、LNA結構與噪聲優化方法 噪聲優化的方法是:限定功耗的噪聲和功率同時匹配噪聲匹配和功率匹配一般不會同時達到, 對于PCSNIM結構的噪聲分析,我們只需要了解與哪些參數有關優化思路是:1.信號源阻抗…

【洛谷入門賽】B4042 順序結構 202410 場

題意 給你一個變量 a a a:小 Y 會讓 a a a 先加 5 5 5 再把它們的和乘 3 3 3 最后輸出;小 L 會讓 a a a 先乘 3 3 3 再加 5 5 5 最后輸出。 要求出小 Y 和小 L 分別會輸出什么東西。 思路 這道題按照題目意思模擬就可以了,重點是考…

Android13修改多媒體默認音量

干就完了! 設置音量為最大音量,修改如下: /framework/base/media/java/android/media/AudioSystem.java/** hide */public static int[] DEFAULT_STREAM_VOLUME new int[] {4, // STREAM_VOICE_CALL7, // STREAM_SYSTEM5, // STREAM_RING-5, // STREAM_MUSIC15, // STREAM…

【Azure 架構師學習筆記】- Azure Databricks (13) -- 搭建Medallion Architecture part 1

本文屬于【Azure 架構師學習筆記】系列。 本文屬于【Azure Databricks】系列。 接上文 【Azure 架構師學習筆記】- Azure Databricks (12) – Medallion Architecture簡介 前言 上文已經介紹了關于Medallion的知識,本文開始用ADB 來實現, 但是基于內容較…