亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java時間類總結(jié)

coolpail / 2188人閱讀

摘要:獲取當(dāng)天是幾號獲取當(dāng)天是星期幾獲取本月的第一天取本月最后一天是不是很贊提供時分秒不提供年月日,也是線程安全并且不可變類。樣例獲取當(dāng)前的小時小時數(shù)加結(jié)果包含年月日時分秒,精確到納秒級別,同樣是線程安全并且不可變類。

java.util.Date

包含有年月日時分秒,精確到毫秒級別。
官方解釋:

// The class Date represents a specific instant in time, with millisecond precision.
// 語句
Date date = new Date();
System.out.println(date);

//輸出結(jié)果
Sat Feb 03 14:48:47 CST 2018
java.sql.Date

包含年月日,時分秒都被設(shè)置為0,之所以這樣設(shè)計是為了適應(yīng)SQL中的DATE類型。
官方解釋:

// A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL DATE value. A milliseconds value represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT.
// To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be "normalized" by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.

注意,雖然說這個類是使用年月日的,但是初始化的時候,需要一個long類型的參數(shù),這個參數(shù)代表著January 1, 1970, 00:00:00 GMT到某個時間的毫秒數(shù)。如果是當(dāng)前時間的話,可以用System.currentTimeMillis()或者new Date().getTime()獲取。

// 語句
java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());
System.out.println(sqlDate);

// 輸出結(jié)果
2018-02-03
java.sql.Time

包含時分秒,這個也是為了SQL中的TIME類型而出現(xiàn)的。

// 語句
Time time = new Time(System.currentTimeMillis());
System.out.println(time);

// 輸出結(jié)果
15:07:35
java.sql.Timestamp

時間戳,適配于SQL中的TIMESTAMP類型而出現(xiàn)的,精確到納秒級別。

格式化輸出:java.text.SimpleDateFormat

這個類提供時間的各種格式化輸出和將字符串轉(zhuǎn)換為時間類,簡單來說,它擁有date → text 以及text → date的能力。
例如:將Date格式化輸出

    // 格式化輸出
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
    String dateStr = sdf.format(new Date());
    System.out.println(dateStr);

    // 結(jié)果
    2018年02月03日  15:20:58

例如:將時間字符串轉(zhuǎn)化為Date

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
    Date date = sdf.parse("2018年02月03日  15:20:58");

注意,SimpleDateFormat.parse(String source)中的source格式一定得是SimpleDateFormat當(dāng)前使用的格式。如這個例子中使用了yyyy年MM月dd日 HH:mm:ss,所以傳入了2018年02月03日 15:20:58時間字符串。
PS:有些同學(xué)對yyyy或者MM這些字母代表的含義不懂的話,建議使用這個類的時候,看一下源碼,源碼類上都有對這些字母的解釋。

java.util.Calendar

日歷類,這個類大多被用于獲取時間的特殊屬性,比如說獲取某個時間對象的年份、月份、星期等

    Calendar calendar = Calendar.getInstance();
    // 設(shè)置時間,不設(shè)置的話,默認(rèn)是當(dāng)前時間
    calendar.setTime(new Date());
    // 獲取時間中的年份
    int year = calendar.get(Calendar.YEAR);

從JDK1.8開始,Calendar增加新的構(gòu)造方式

    // since jdk 1.8
    Calendar calendar = new Calendar.Builder().setDate(2018, 3, 25).build();
    int year = calendar.get(Calendar.YEAR);
    System.out.println(year);
階段小結(jié)

以上大概就是jdk1.8之前的操作時間方式了。然后,從jdk1.8開始,有了新的操作時間的類。

java.time.LocalDate

LocalDate提供年月日而不提供時分秒信息,它是不可變類且線程安全的。它經(jīng)常被用于展示year-month-day,day-of-year,day-of-week,week-of-year等格式的信息。

        LocalDate localDate = LocalDate.now();
        // 獲取當(dāng)天是幾號
        int dayOfMonth = localDate.getDayOfMonth();
        // 獲取當(dāng)天是星期幾
        DayOfWeek dayOfWeek = localDate.getDayOfWeek();
        
        // 獲取本月的第一天
        LocalDate firstDayOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
        // 取本月最后一天
        LocalDate lastDayOfThisMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());

是不是很贊~

java.time.Time

提供時分秒不提供年月日,也是線程安全并且不可變類。它經(jīng)常被用于展示hour-minute-second格式的信息??梢詫r間進(jìn)行加減等操作。

        // 樣例
        LocalTime localTime = LocalTime.now();
        // 獲取當(dāng)前的小時
        int hour = localTime.getHour();
        System.out.println(hour);
        // 小時數(shù)加1
        LocalTime addTwoHours = localTime.plusHours(2L);
        System.out.println(addTwoHours.getHour());

        // 結(jié)果
        16
        18
java.time.LocalDateTime

包含年月日時分秒,精確到納秒級別,同樣是線程安全并且不可變類。它可以操作時間中的年月日時分秒并且可以獲取其中的屬性。

        LocalDateTime localDateTime = LocalDateTime.now();
        // 獲取年
        int year = localDateTime.getYear();
        // 獲取小時
        int hour = localDateTime.getHour();
        // 增加一年
        LocalDateTime addOneYear = localDateTime.plusYears(1);
結(jié)語

今天就先這樣啦,希望看到這篇博文的人能有所收獲,同樣,錯誤之處還請幫忙指正。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70930.html

相關(guān)文章

  • Java 總結(jié)

    摘要:中的詳解必修個多線程問題總結(jié)個多線程問題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運(yùn)行原理從虛擬機(jī)工作流程看運(yùn)行原理。 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 基于 POI 封裝 ExcelUtil 精簡的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對于 ...

    caspar 評論0 收藏0
  • Java線程池簡單總結(jié)

    摘要:本文主要內(nèi)容為簡單總結(jié)中線程池的相關(guān)信息。方法簇方法簇用于創(chuàng)建固定線程數(shù)的線程池。三種常見線程池的對比上文總結(jié)了工具類創(chuàng)建常見線程池的方法,現(xiàn)對三種線程池區(qū)別進(jìn)行比較。 概述 線程可認(rèn)為是操作系統(tǒng)可調(diào)度的最小的程序執(zhí)行序列,一般作為進(jìn)程的組成部分,同一進(jìn)程中多個線程可共享該進(jìn)程的資源(如內(nèi)存等)。在單核處理器架構(gòu)下,操作系統(tǒng)一般使用分時的方式實現(xiàn)多線程;在多核處理器架構(gòu)下,多個線程能夠...

    CoorChice 評論0 收藏0
  • 后臺開發(fā)常問面試題集錦(問題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    spacewander 評論0 收藏0
  • 后臺開發(fā)常問面試題集錦(問題搬運(yùn)工,附鏈接)

    摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...

    xfee 評論0 收藏0

發(fā)表評論

0條評論

coolpail

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<