欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java的時間類匯總(齊全)

 更新時間:2022年09月09日 09:18:02   作者:SunDuncan???????  
這篇文章主要介紹了java的時間類匯總(齊全),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下

前言

在項(xiàng)目開發(fā)中,我們用到了很多的時間類,很容易搞混,每次都要去網(wǎng)上查一遍文檔,現(xiàn)在自己整理一下,忘記了直接查,沒網(wǎng)也能直接擼碼。同時自己也鞏固一下。對時間類不熟悉的朋友也可以借鑒一下。

這邊主要是整理1.8的方法,如果方法已經(jīng)被棄用了則不在整理

基礎(chǔ)類

這個部分整理一下,我們常用的時間類:

簡述
java.util.Date(父類)最基本的時間類
java.sql.Date格式年月日,沒有無參構(gòu)造
java.sql.time時分秒
java.sql.Timestamp年月日時分秒毫秒
java.util.Calendar(日歷)可以表示年月日時分秒毫秒
java.text.DateFormat時間可以格式化

java.util.Date的用法實(shí)例

Date date = new Date();
//Date date1 = new Date(0L); // 可以傳入Long值,表示距離1970年1月1日00:00:00 毫秒值  // 默認(rèn)當(dāng)前
System.out.println("[java.util.Date] " + date); ? ? ? ? ? ?// 默認(rèn)輸出格式
System.out.println("[java]date.Date]--getTime() " + date.getTime()); ?// 時間戳 距離1970.1.1的毫秒數(shù)
System.out.println("[java]date.Date]--toInstant() " + date.toInstant()); // 轉(zhuǎn)化成Instant格式

結(jié)果:

java.sql.Date的用法實(shí)例

java.sql.Date date = new java.sql.Date(new Date().getTime()); // 構(gòu)造函數(shù) 傳入Long值,是距離1970年1月1日的毫秒值
System.out.println("[java.sql.Date] " + date);
date.setTime(0L); ? // 相當(dāng)于重置一下時間,填入的還是Long值
System.out.println("[java.sql.Date] - setTime(0L) 后 " + date);

結(jié)果:

java.sql.Time的用法實(shí)例

// System.currentTimeMillis() 獲取的值 和 new java.util.Date的getTime的值是一樣的
// 但這個不能保證唯一,如果在短時間內(nèi)重復(fù)獲取可能會獲得相同的值
Time time = new Time(System.currentTimeMillis()); // 構(gòu)造函數(shù) 傳入的Long的值
System.out.println("[java.sql.Time] " + time); ? // 時:分:秒
time.setTime(0L); // 重置時間
System.out.println("[java.sql.Time] - setTime(0L) 后 " + time);

結(jié)果:

java.sql.Timestamp 用法實(shí)例

Long systemTime = System.currentTimeMillis();
Timestamp timestamp = new Timestamp(systemTime);
// ? ? ?  timestamp.setTime(0L); ? // 這個不解釋和之前的一樣
System.out.println("[System.currentTimeMillis()] " + systemTime);
System.out.println("[java.sql.Timestamp] " + timestamp);
System.out.println("[java.sql.Timestamp] - getNanos() " + timestamp.getNanos());
System.out.println("[java.sql.Timestamp] - getTime() " + timestamp.getTime());
timestamp.setNanos(892317); ?// 設(shè)置納秒級時間
System.out.println("[java.sql.Timestamp] -setNanos(100) 后 " + timestamp);

結(jié)果:

java.util.Calendar 用法實(shí)例

這個不是線程安全的,這個的優(yōu)勢在于我可以獲取到相應(yīng)的年月日時分秒,這個主要通過get方法獲取,不過直接用底下的simpleDateFormat,這邊做了解

 ? ? ? ?Calendar calendar = new GregorianCalendar();
 ? ? ? ?System.out.println("[java.util.Calendar--getTime] " + calendar.getTime());
 ? ? ? ?System.out.println("[java.util.Calendar--getWeekYear] " + calendar.getWeekYear());
 ? ? ? ?System.out.println("[java.util.Calendar--getMinimalDaysInFirstWeek ] " ?+ calendar.getMinimalDaysInFirstWeek());
 ? ? ? ?System.out.println("[java.util.Calendar--getFirstDayOfWeek ] " ?+ calendar.getFirstDayOfWeek());
 ? ? ? ?System.out.println("[java.util.Calendar--getTimeInMillis ] " ?+ calendar.getTimeInMillis());
 ? ? ? ?System.out.println("[java.util.Calendar--getWeeksInWeekYear ] " ?+ calendar.getWeeksInWeekYear());
 ? ? ? ?System.out.println("[java.util.Calendar--getMinimalDaysInFirstWeek ] " ?+ calendar.getMinimalDaysInFirstWeek());
?
 ? ? ? ?// 當(dāng)前時間 2022-09-07
 ? ? ? ?System.out.println("[java.util.Calendar--calendar.getActualMaximum(Calendar.DATE)] " + calendar.getActualMaximum(Calendar.DATE));
 ? ? ? ?System.out.println("[java.util.Calendar--calendar.get(Calendar.YEAR)] " + calendar.get(Calendar.YEAR));
 ? ? ? ?System.out.println("[java.util.Calendar--calendar.get(Calendar.MONTH)] " + calendar.get(Calendar.MONTH));
 ? ? ? ?System.out.println("[java.util.Calendar--calendar.get(Calendar.DATE)] " + calendar.get(Calendar.DATE));
 ? ? ? ?System.out.println("[java.util.Calendar--calendar.get(Calendar.DAY_OF_WEEK) " + calendar.get(Calendar.DAY_OF_WEEK));
 ? ? ? ?System.out.println("[java.util.Calendar--calendar.getMaximum(Calendar.DATE) " + calendar.getMaximum(Calendar.DATE));

java.text.SimpleDateFormat用法實(shí)例

這個主要是可以自己去定義輸出/輸入時間的格式,比如Date默認(rèn)的是 1970-01-01,現(xiàn)在可以修改成必入 1970/01/01

底下的是類型的匹配的字符

LetterDate or Time ComponentPresentationExamples
GEra designatorTextAD
yYearYear199696
YWeek yearYear200909
MMonth in year (context sensitive)MonthJulyJul07
LMonth in year (standalone form)MonthJulyJul07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesdayTue
uDay number of week (1 = Monday, ..., 7 = Sunday)Number1
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard TimePSTGMT-08:00
ZTime zoneRFC 822 time zone-0800
XTime zoneISO 8601 time zone-08-0800-08:00

其中的類型為:

  • Text: 對于格式化,如果模式字母的數(shù)量是4以上,則使用完整的形式; 否則,如果有的話,使用簡短或縮寫形式。 對于解析,兩種形式都是接受的,與模式字母的數(shù)量無關(guān)。
SimpleDateFormat sdf = new SimpleDateFormat("E");
SimpleDateFormat sdf1 = new SimpleDateFormat("EE");
SimpleDateFormat sdf2 = new SimpleDateFormat("EEE");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEEE");
?
System.out.println("[java.text.SimpleDateFormat--E] " + sdf.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--EE] " + sdf1.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--EEE] " + sdf2.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--EEEE] " + sdf3.format(new Date()));

  • Number: 對于格式化,模式字母的數(shù)量是最小位數(shù),而較短的數(shù)字將零填充到此數(shù)量。 對于解析,模式字母的數(shù)量將被忽略,除非需要分隔兩個相鄰的字段。
SimpleDateFormat sdf4 = new SimpleDateFormat("w");
SimpleDateFormat sdf5 = new SimpleDateFormat("ww");
SimpleDateFormat sdf6 = new SimpleDateFormat("www");
SimpleDateFormat sdf7 = new SimpleDateFormat("wwww");
?
System.out.println("[java.text.SimpleDateFormat--w] " + sdf4.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--ww] " + sdf5.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--www] " + sdf6.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--wwww] " + sdf7.format(new Date()));

  • Year:對于格式化,如果模式字母數(shù)為2,那么年份將被截?cái)酁?位數(shù); 否則被解釋為Number(不足補(bǔ)0)
 SimpleDateFormat sdf8 = new SimpleDateFormat("y");
SimpleDateFormat sdf9 = new SimpleDateFormat("yy");
SimpleDateFormat sdf10 = new SimpleDateFormat("yyy");
SimpleDateFormat sdf11 = new SimpleDateFormat("yyyy");
SimpleDateFormat sdf12 = new SimpleDateFormat("yyyyy");
?
System.out.println("[java.text.SimpleDateFormat--y] " + sdf8.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--yy] " + sdf9.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--yyy] " + sdf10.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--yyyy] " + sdf11.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--yyyyy] " + sdf12.format(new Date()));

  • Month: 如果模式字母數(shù)為3以上,則該月份被解釋為text; 否則,它被解釋為number
SimpleDateFormat sdf8 = new SimpleDateFormat("M");
SimpleDateFormat sdf9 = new SimpleDateFormat("MM");
SimpleDateFormat sdf10 = new SimpleDateFormat("MMM");
SimpleDateFormat sdf11 = new SimpleDateFormat("MMMM");
SimpleDateFormat sdf12 = new SimpleDateFormat("MMMMM");
?
System.out.println("[java.text.SimpleDateFormat--M] " + sdf8.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--MM] " + sdf9.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--MMM] " + sdf10.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--MMMM] " + sdf11.format(new Date()));
System.out.println("[java.text.SimpleDateFormat--MMMMM] " + sdf12.format(new Date()));

其他的類型和時區(qū)有關(guān),暫時不去做描述先知道上面的常見的幾個

舉個常見的例子:

SimpleDateFormat sdf13 = new SimpleDateFormat("y-MM-dd kk:mm:ss"); // 這里的年也可以用 yyyy,這樣子和數(shù)量一致,好理解罷了
System.out.println("[java.text.SimpleDateFormat--y-MM-dd kk:mm:ss] " + sdf13.format(new Date()));

 常用方法 parse,format

SimpleDateFormat sdf13 = new SimpleDateFormat("y-MM-dd");
// 字符串轉(zhuǎn)化為Date, 需要拋出異常
Date date = sdf13.parse("2022-01-02");
System.out.println("[java.text.SimpleDateFormat--parse] " + date.toString());
// Date轉(zhuǎn)化為String
String currentDateString = sdf13.format(new Date());
System.out.println("[java.text.SimpleDateFormat--format] " + currentDateString);

接下來的時間類都是jdk1.8新增的

相對來說,底下的時間是沒有偏移量的比如1就代表周一,而不要加。然后還是線程安全的

底下的我放在一起做個比較

LocalDate,LocalTime,LocalDateTime用法實(shí)例

/**
 * 獲取當(dāng)前的日期
 */
LocalDate localDate = LocalDate.now();
System.out.println("[java.time.LocalDate] -- now " + localDate);
LocalTime localTime = LocalTime.now();
System.out.println("[java.time.LocalTime ] -- now " + localTime);
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("[java.time.LocalDateTime ] -- now " + localDateTime);
/**
 * 獲取指定的日期
 */
LocalDate localDate1 = LocalDate.of(2022,9,7);
System.out.println("[java.time.LocalDate] -- of " + localDate1);
LocalTime localTime1 = LocalTime.of(12,53,18);
System.out.println("[java.time.LocalTime] -- of " + localTime1);
LocalDateTime localDateTime1 = LocalDateTime.of(2000, 12,3,12,3,4);
System.out.println("[java.time.LocalDateTime ] -- of " + localDateTime1);
/**
 * get的一些方法
 */
System.out.println("[java.time.LocalDateTime ] -- getYear " + localDate1.getYear());
System.out.println("[java.time.LocalDateTime ] -- getDayOfMonth " + localDate1.getDayOfMonth());
System.out.println("[java.time.LocalDateTime ] -- getMonth " + localDate1.getMonth());
System.out.println("[java.time.LocalDateTime ] -- getMonthValue " + localDate1.getMonthValue());
?
?
?
/**
 * with 就是重新賦值(原LocalDateTime不變)
 * 這邊就舉一個例
 */
LocalDateTime localDateTime2 = localDateTime1.withYear(2011);
System.out.println("[java.time.LocalDateTime ] --原來 2000年 " + localDateTime1);
System.out.println("[java.time.LocalDateTime ] --原來 2000年  withYear(2011) " + localDateTime2);
?
/**
 * 加 減操作
 * 舉一個加的例子
 * minusXXX 這個是減
 */
System.out.println("[java.time.LocalDateTime ] --原來 12月份 " + localDateTime1.getMonthValue());
System.out.println("[java.time.LocalDateTime ] --原來 12月份  plusMonths(1) " + localDateTime1.plusMonths(1).getMonthValue());

DateTimeFormatter

這個主要可以用來進(jìn)行String 和 LocalXXX之間的轉(zhuǎn)化,案例

 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
 System.out.println(dateTimeFormatter.format(LocalDateTime.now()));

總結(jié)

這邊總結(jié)了基本常用的時間類,沒有把所有的方法都列出來,不過常見的列出來了,如果沒有強(qiáng)制要求建議使用 1.8

到此這篇關(guān)于java的時間類匯總(齊全)的文章就介紹到這了,更多相關(guān)java時間類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解Spring Security的基本用法

    一文詳解Spring Security的基本用法

    Spring Security是一個功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架, 提供了完善的認(rèn)證機(jī)制和方法級的授權(quán)功能。本文將通過一個簡單的案例了解一下Spring Security的基本用法,需要的可以參考一下
    2022-05-05
  • Java關(guān)于JDK1.8新特性的Stream流

    Java關(guān)于JDK1.8新特性的Stream流

    這篇文章主要介紹了版本薇JDK1.8 的Java中的Stream流,Stream流是一個來自數(shù)據(jù)源的元素隊(duì)列并支持聚合操作,感興趣的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • JavaWeb.servlet的基本使用方法詳解

    JavaWeb.servlet的基本使用方法詳解

    Servlet指在服務(wù)器端執(zhí)行的一段Java代碼,可以接收用戶的請求和返回給用戶響應(yīng)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于JavaWeb.servlet基本使用的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Java中策略設(shè)計(jì)模式的實(shí)現(xiàn)及應(yīng)用場景

    Java中策略設(shè)計(jì)模式的實(shí)現(xiàn)及應(yīng)用場景

    策略設(shè)計(jì)模式是Java中一種常用的設(shè)計(jì)模式,它通過定義一系列算法并將其封裝成獨(dú)立的策略類,從而使得算法可以在不影響客戶端的情況下隨時切換。策略設(shè)計(jì)模式主要應(yīng)用于系統(tǒng)中存在多種相似的算法、需要靈活調(diào)整算法邏輯或者需要擴(kuò)展新的算法等場景
    2023-04-04
  • Java使用PrepareStatement實(shí)現(xiàn)數(shù)據(jù)的插入與查詢操作

    Java使用PrepareStatement實(shí)現(xiàn)數(shù)據(jù)的插入與查詢操作

    這篇文章主要為大家詳細(xì)介紹了Java如何使用PrepareStatement實(shí)現(xiàn)數(shù)據(jù)的插入與查詢操作,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-09-09
  • Java全面細(xì)致講解類與對象

    Java全面細(xì)致講解類與對象

    類和對象是兩種以計(jì)算機(jī)為載體的計(jì)算機(jī)語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲在內(nèi)存中—個可以擁有在某個范圍內(nèi)的可變存儲區(qū)域
    2022-05-05
  • 深入理解Spring AOP

    深入理解Spring AOP

    這篇文章主要介紹了深入理解Spring AOP,詳細(xì)的介紹了spring aop的具體實(shí)現(xiàn)與理論
    2017-01-01
  • Java 中文字符按Unicode排序的實(shí)現(xiàn)方法

    Java 中文字符按Unicode排序的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java 中文字符按Unicode排序的實(shí)現(xiàn)方法,非常不錯,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • JDBC中PreparedStatement詳解以及應(yīng)用場景實(shí)例介紹

    JDBC中PreparedStatement詳解以及應(yīng)用場景實(shí)例介紹

    PreparedStatement對象代表的是一個預(yù)編譯的SQL語句,用它提供的setter方法可以傳入查詢的變量,這篇文章主要給大家介紹了關(guān)于JDBC中PreparedStatement詳解以及應(yīng)用場景實(shí)例介紹的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決

    Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決

    本文主要介紹了Springboot視頻接口報(bào)大量的ClientAbortException找不到原因的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評論