在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

常見的幾種日期對象用法

科技綠洲 ? 來源:了不起 ? 作者:了不起 ? 2023-09-25 11:10 ? 次閱讀

前言

LocalDateTime、LocalDate、LocalTime 是 Java8 全新的日期框架,加強了對時間的管理,有很多特別好用的時間運算方法,而且是線程安全的,較之前的 util.Date 以及 Calander 使用起來更加的方便直觀,下面介紹幾種常見的日期對象用法。

  • LocalDateTime:日期加時間的日期對象,包含年月日時分秒
  • LocalDate:日期類,包含年月日
  • LocalTime:時間類,包含時分秒

LocalDateTime

獲取當前時間

@Test
public void test() {
    LocalDate localDate = LocalDate.now();
    LocalTime localTime = LocalTime.now();
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println("localDate:"+localDate);//2023-02-22
    System.out.println("localTime:"+localTime);//17:25:36.590
    System.out.println("localDateTime:"+localDateTime);//2023-02-22T17:25:36.590
}

輸出結果:

圖片

可以看到不用做格式轉換就可以得到可讀性很高的日期格式。注意:ISO 8601規定的日期和時間分隔符是T。標準格式如下:

  • 日期:yyyy-MM-dd
  • 時間:HH:mm:ss
  • 帶毫秒的時間:HH:mm:ss.SSS
  • 日期和時間:yyyy-MM-dd'T'HH:mm:ss
  • 帶毫秒的日期和時間:yyyy-MM-dd'T'HH:mm:ss.SSS

獲取當前時間的年月日時分秒

@Test
public void test() {
    LocalDateTime localDateTime = LocalDateTime.now(); // 獲取當前時間
    int year = localDateTime.getYear(); // 獲取年份 2023
    int month = localDateTime.getMonthValue(); // 獲取月份 2
    int day = localDateTime.getDayOfMonth(); // 獲取月中的天數 22
    int hour = localDateTime.getHour(); // 獲取當前的小時 17
    int minute = localDateTime.getMinute(); // 獲取當前分鐘 33
    int second = localDateTime.getSecond(); // 獲取當前秒數 22
    System.out.println(year);
    System.out.println(month);
    System.out.println(day);
    System.out.println(hour);
    System.out.println(minute);
    System.out.println(second);
}

輸出結果:

圖片

給LocalDateTime賦值

在static目錄中新建kaptcha.html頁面,代碼如下:

public void test() {
    LocalDateTime of = LocalDateTime.of(2023,2,22,22,22,22);
    System.out.println(of); // 輸出2023-02-22T22:22:22
}

時間與字符串相互轉換

@Test
public void test() {
    // 將字符串轉換為指定格式的時間(格式要和給定的格式一致,不然會報錯)
    LocalDateTime parse = LocalDateTime.parse("2023-02-22 22:22:22", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    LocalDateTime parse1 = LocalDateTime.parse("2023 02 22 22:22:22", DateTimeFormatter.ofPattern("yyyy MM dd HH:mm:ss"));
    LocalDateTime parse2 = LocalDateTime.parse("2023.02.22 22:22:22", DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss"));
    System.out.println(parse); // 輸出2023-02-22T22:22:22
    System.out.println(parse1); // 輸出2023-02-22T22:22:22
    System.out.println(parse2); // 輸出2023-02-22T22:22:22
    // 時間轉字符串
    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter of = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String dateTime = now.format(of);
    System.out.println(dateTime); // 輸出 2023-02-22 17:56:18
}

輸出結果:

圖片

時間運算:加上對應時間

LocalDateTime提供了對日期和時間進行加減的非常簡單的鏈式調用,讓時間運算變得非常簡單:

@Test
public void test() {
    LocalDateTime now = LocalDateTime.now(); // 當前時間2023-02-22T18:00:19.352
    LocalDateTime plusYears= now.plusYears(2); // 在當前時間加上2年2025-02-22T18:00:19.352
    LocalDateTime plusMonths= now.plusMonths(2);// 在當前時間商加上2月2023-04-22T18:00:19.352
    LocalDateTime plusDays= now.plusDays(2); // 在當前時間加上2天2023-02-24T18:00:19.352
    LocalDateTime plusHours= now.plusHours(2); // 在當前時間加上2個小時2023-02-22T20:00:19.352
    LocalDateTime plusMinutes= now.plusMinutes(30); // 在當前時間加上30分鐘2023-02-22T18:30:19.352
    LocalDateTime plusSeconds = now.plusSeconds(30); // 在當前時間加上30秒2023-02-22T18:00:49.352
    System.out.println(now);
    System.out.println(plusYears);
    System.out.println(plusMonths);
    System.out.println(plusDays);
    System.out.println(plusHours);
    System.out.println(plusMinutes);
    System.out.println(plusSeconds);
}

輸出結果:

圖片

時間運算:減去對應時間

@Test
public void test() {
    LocalDateTime now = LocalDateTime.now(); // 當前時間
    LocalDateTime minusYears = now.minusYears(2); // 在當前時間減上2年
    LocalDateTime minusMonths = now.minusMonths(2);// 在當前時間商減上2月
    LocalDateTime minusDays = now.minusDays(2); // 在當前時間減上2天
    LocalDateTime minusHours = now.minusHours(2); // 在當前時間減上2個小時
    LocalDateTime minusMinutes = now.minusMinutes(30); // 在當前時間減上30分鐘
    LocalDateTime minusSeconds = now.minusSeconds(30); // 在當前時間減上30秒
    System.out.println("now:" + now);
    System.out.println("minusYears:" + minusYears);
    System.out.println("minusMonths:" + minusMonths);
    System.out.println("minusDays:" + minusDays);
    System.out.println("minusHours:" + minusHours);
    System.out.println("minusMinutes:" + minusMinutes);
    System.out.println("minusSeconds:" + minusSeconds);
}

輸出結果:

圖片

兩個時間比較

@Test
public void test() {
    LocalDateTime now = LocalDateTime.now(); // 當前時間
    LocalDateTime now1 = now.plusYears(5); // 在當前時間加上5年
    //  給LocalDateTime 賦值
    LocalDateTime of = LocalDateTime.of(2023,2,2,22,22,22);
    LocalDateTime of1 = LocalDateTime.of(2023,8,5,1,1,1);
    //兩個時間作比較,第一個時間減去第二個時間(如果年份相同,比較月份,月份相同比較天數,以此類推)
    int compareTo = now1.compareTo(now);
    int compareTo1 = now.compareTo(now1);
    int compareTo2 = now.compareTo(of);
    int compareTo3 = now.compareTo(of1);
    System.out.println(now);   // 輸出 2023-02-22T20:19:44.112v
    System.out.println(now1); // 輸出 2028-02-22T20:19:44.112
    System.out.println(of); // 輸出 2023-02-02T22:22:22
    System.out.println(of1); // 輸出 2023-08-05T01:01:01
    System.out.println(compareTo); // 輸出 5
    System.out.println(compareTo1); // 輸出 -5
    System.out.println(compareTo2); // 輸出 20
    System.out.println(compareTo3); // 輸出 -6
}

輸出結果:

圖片

利用Duration計算時間差

注意沒有計算相差的年和秒值,對于要計算相差的秒數,可以利用計算毫秒來進行轉換

@Test
public void test() {
    LocalDateTime now = LocalDateTime.now(); // 當前時間
    //  給LocalDateTime 賦值
    LocalDateTime of = LocalDateTime.of(2022,2,22,2,2,2);
    Duration duration = Duration.between(of,now); // 后面減去前面
    long toDays = Duration.between(of,now).toDays(); //相差的天數
    long toHours = Duration.between(of,now).toHours();//相差的小時數
    long toMinutes = Duration.between(of,now).toMinutes();//相差的分鐘數
    long toMillis = Duration.between(of,now).toMillis();//相差毫秒數
    long toNanos = Duration.between(of,now).toNanos();//相差的納秒數
    System.out.println("toDays:"+ toDays); // 輸出 toDays:365
    System.out.println("toHours:"+ toHours); // 輸出 toHours:8778
    System.out.println("toMinutes:"+ toMinutes); // 輸出 toMinutes:526732
    System.out.println("toMillis:"+ toMillis); // 輸出 toMillis:31603973840
    System.out.println("toNanos:"+ toNanos); // 輸出 toNanos:31603973840000000
}

輸出結果:

圖片

改變當前時間的年月日時分秒

@Test
public void test() {
    LocalDateTime now = LocalDateTime.now(); // 當前時間
    LocalDateTime withYear = now.withYear(2060); // 改變當前年份(變成2060年)
    LocalDateTime withMonth = now.withMonth(12); // 改變當前月份(變成12月份)
    LocalDateTime withDayOfMonth = now.withDayOfMonth(28); //改變當前天數(變成28日)
    LocalDateTime withHour = now.withHour(23); // 改變當前小時數(變成23時)
    LocalDateTime withMinute = now.withMinute(30); // 改變當前分鐘(變成30分鐘)
    LocalDateTime withSecond = now.withSecond(23); // 改變當前小時數(變成23時)
    LocalDateTime withDayOfYear = now.withDayOfYear(60); // 從一月一號開始加上60天
    System.out.println(now);
    System.out.println("withYear:"+ withYear);
    System.out.println("withMonth:"+ withMonth);
    System.out.println("withDayOfMonth:"+ withDayOfMonth);
    System.out.println("withHour:"+ withHour);
    System.out.println("withMinute:"+ withMinute);
    System.out.println("withSecond:"+ withSecond);
    System.out.println("withDayOfYear:"+ withDayOfYear);
}

輸出結果:

圖片

自定義輸出的格式

@Test
public void test() {
    // 自定義格式化:
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
    DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss");
    System.out.println("自定義格式yyyy/MM/dd HH:mm:ss :"+dtf.format(LocalDateTime.now()));
    System.out.println("自定義格式yyyy.MM.dd HH:mm:ss :"+dtf1.format(LocalDateTime.now()));

    // 用自定義格式解析:
    LocalDateTime dt2 = LocalDateTime.parse("2020/10/20 15:16:17", dtf);
    System.out.println("格式解析:"+dt2);
}

輸出結果:

圖片

LocalDateTime的with()方法

@Test
public void test() {
    // 本月第一天0:00時刻:
    LocalDateTime firstDay = LocalDate.now().withDayOfMonth(1).atStartOfDay();
    // 本月最后1天:
    LocalDate lastDay = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth());
    // 下月第1天:
    LocalDate nextMonthFirstDay = LocalDate.now().with(TemporalAdjusters.firstDayOfNextMonth());
    // 本月第1個周一:
    LocalDate firstWeekday = LocalDate.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
}

兩個日期前后的比較與判斷

@Test
public void test() {
    //判斷兩個時間點的前后
    LocalDateTime now = LocalDateTime.now();
    LocalDateTime target = LocalDateTime.of(2022, 2, 22, 22, 22, 22);
    boolean isBefore = now.isBefore(target);
    System.out.println("now:"+now);
    System.out.println("target:"+target);
    System.out.println("isBefore:"+isBefore);
    System.out.println(LocalDate.now().isBefore(LocalDate.of(2022, 2, 22)));
    System.out.println(LocalTime.now().isAfter(LocalTime.parse("08:15:00")));
}

輸出結果:

圖片

結束語

LocalDateTime獲取時間以及計算都非常方便,而且是線程安全的,建議使用LocalDateTime。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68616
  • 對象
    +關注

    關注

    1

    文章

    38

    瀏覽量

    17391
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19684
收藏 人收藏

    評論

    相關推薦

    掌握find命令的這幾種用法,就沒有找不到的文件!

    今天浩道跟大家分享linux下關于find命令的幾種經典用法,讓你在linux茫茫的文件海洋中可以找出任何想要的文件!
    發表于 12-06 14:19 ?816次閱讀

    TL431的幾種基本用法分享

    TL431作為一個高性價比的常用分流式電壓基準,有很廣泛的用途。這里簡單介紹一下TL431常見的和不常見幾種接法。
    發表于 05-06 09:42

    常見的整流電路有哪幾種?如何去區分這幾種常見的整流電路?

    常見的整流電路有哪幾種?其特性是什么?如何去區分這幾種常見的整流電路?對整流電路中二極管的要求有哪些?
    發表于 07-11 07:19

    while的使用形式有哪幾種?分別有什么用法

    請問下while的使用形式有哪幾種?分別有什么用法
    發表于 07-15 12:29

    狀態位在軟件設計中的常見用法是什么?

    外設常具備的幾類寄存器?控制外設的常見操作?狀態位在軟件設計中的常見用法是什么?外設函數有哪些類型?
    發表于 11-18 07:32

    常見的fork用法是什么

    的進程一模一樣,這兩 個進程都會繼續運行最常見的fork用法是創建一個新的進程,然后使用exec載入二進制映像,替換當前進程的映像。這種情況下,派生(for
    發表于 12-15 07:38

    整理一下ElementUI+VUE日期控件禁用用法

    今天給大家整理一下ElementUI+VUE 日期控件禁用用法,希望對大家有所幫助!HTML文件
    發表于 01-18 09:35

    幾種常見振蕩器的高頻電路

    幾種常見振蕩器的高頻電路 圖 4-7是一些常見振蕩器的高頻電路
    發表于 06-29 13:50 ?8398次閱讀
    <b class='flag-5'>幾種</b><b class='flag-5'>常見</b>振蕩器的高頻電路

    幾種常見的安規認證簡介

    幾種常見的安規認證簡介
    發表于 11-29 17:57 ?0次下載

    通信教程02 幾種常見串行通信及基礎原理

    通信教程02_幾種常見串行通信及基礎原理
    的頭像 發表于 02-26 16:12 ?9871次閱讀

    常見幾種國家供電系統設計

    幾種常見的供電系統設計構思
    發表于 08-23 10:01 ?6次下載

    幾種常見的LED電路分享

    在一些IO引腳較少或為了減少對IO的使用,需要用盡可能的減少引腳使用,本文介紹幾種常見的LED的電路,減少IO使用。
    的頭像 發表于 08-16 08:56 ?5272次閱讀
    <b class='flag-5'>幾種</b><b class='flag-5'>常見</b>的LED電路分享

    OpenHarmony常見幾種權限

    今天給大家說一下OpenHarmony常見幾種權限
    的頭像 發表于 08-29 17:27 ?2374次閱讀

    java 8的日期用法

    = LocalDate.now(); System.out.println(now);} 設置日期 of 方法是一個靜態方法,接收年、月、日三個 int 參數,返回 LocalDate 對象。需要注意的是月份不是
    的頭像 發表于 10-09 15:50 ?442次閱讀

    sql中日期函數的用法

    日期函數在SQL中是非常重要的功能之一,它們能幫助我們在數據庫中存儲和處理日期和時間數據。在本文中,我將詳細介紹一些常用的SQL日期函數,包括如何創建日期和時間數據、如何格式化和轉換
    的頭像 發表于 11-17 16:24 ?1056次閱讀
    主站蜘蛛池模板: 成人丁香婷婷| 午夜福免费福利在线观看| 午夜视频免费观看| 1024久久| 日日干狠狠干| 欲妇放荡叫床很浪的小说| 天天综合射| 国产色婷婷精品免费视频| 精品国产午夜久久久久九九| 久久久久久毛片免费播放| 欧美三级在线免费观看| 五月天婷婷丁香花| 亚洲欧洲一二三区| 欧美在线高清视频| 天天干天天干天天操| 日产精品卡二卡三卡四卡无卡乱码| 伊人97在线| 国产在线一区二区三区四区| 一丝不遮视频免费观看| 免费网址视频在线看| 色站视频| 天天看天天做| 日本不卡一区二区三区在线观看| 欧美午夜电影| 美女天天操| 亚洲伊人网站| 成人xxxxx| 一区免费视频| 美女一区二区三区| 国产午夜精品一区二区| 亚洲综合天堂网| www.av网站| 亚洲男人的天堂在线播放| 欧美a在线播放| 国产精品成人一区二区| 四虎在线播放免费永久视频| 午夜影皖| 在线免费观看毛片网站| 94在线| videos另类重口tv| 最新合集丨新片速递|