摘要:獲取當(dāng)天是幾號(hào)獲取當(dāng)天是星期幾獲取本月的第一天取本月最后一天是不是很贊提供時(shí)分秒不提供年月日,也是線程安全并且不可變類。樣例獲取當(dāng)前的小時(shí)小時(shí)數(shù)加結(jié)果包含年月日時(shí)分秒,精確到納秒級(jí)別,同樣是線程安全并且不可變類。
java.util.Date
包含有年月日時(shí)分秒,精確到毫秒級(jí)別。
官方解釋:
// 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 2018java.sql.Date
包含年月日,時(shí)分秒都被設(shè)置為0,之所以這樣設(shè)計(jì)是為了適應(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.
注意,雖然說這個(gè)類是使用年月日的,但是初始化的時(shí)候,需要一個(gè)long類型的參數(shù),這個(gè)參數(shù)代表著January 1, 1970, 00:00:00 GMT到某個(gè)時(shí)間的毫秒數(shù)。如果是當(dāng)前時(shí)間的話,可以用System.currentTimeMillis()或者new Date().getTime()獲取。
// 語句 java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); System.out.println(sqlDate); // 輸出結(jié)果 2018-02-03java.sql.Time
包含時(shí)分秒,這個(gè)也是為了SQL中的TIME類型而出現(xiàn)的。
// 語句 Time time = new Time(System.currentTimeMillis()); System.out.println(time); // 輸出結(jié)果 15:07:35java.sql.Timestamp
時(shí)間戳,適配于SQL中的TIMESTAMP類型而出現(xiàn)的,精確到納秒級(jí)別。
格式化輸出:java.text.SimpleDateFormat這個(gè)類提供時(shí)間的各種格式化輸出和將字符串轉(zhuǎn)換為時(shí)間類,簡(jiǎ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
例如:將時(shí)間字符串轉(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)前使用的格式。如這個(gè)例子中使用了yyyy年MM月dd日 HH:mm:ss,所以傳入了2018年02月03日 15:20:58時(shí)間字符串。
PS:有些同學(xué)對(duì)yyyy或者MM這些字母代表的含義不懂的話,建議使用這個(gè)類的時(shí)候,看一下源碼,源碼類上都有對(duì)這些字母的解釋。
日歷類,這個(gè)類大多被用于獲取時(shí)間的特殊屬性,比如說獲取某個(gè)時(shí)間對(duì)象的年份、月份、星期等
Calendar calendar = Calendar.getInstance(); // 設(shè)置時(shí)間,不設(shè)置的話,默認(rèn)是當(dāng)前時(shí)間 calendar.setTime(new Date()); // 獲取時(shí)間中的年份 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之前的操作時(shí)間方式了。然后,從jdk1.8開始,有了新的操作時(shí)間的類。
java.time.LocalDateLocalDate提供年月日而不提供時(shí)分秒信息,它是不可變類且線程安全的。它經(jīng)常被用于展示year-month-day,day-of-year,day-of-week,week-of-year等格式的信息。
LocalDate localDate = LocalDate.now(); // 獲取當(dāng)天是幾號(hào) 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提供時(shí)分秒不提供年月日,也是線程安全并且不可變類。它經(jīng)常被用于展示hour-minute-second格式的信息。可以對(duì)時(shí)間進(jìn)行加減等操作。
// 樣例 LocalTime localTime = LocalTime.now(); // 獲取當(dāng)前的小時(shí) int hour = localTime.getHour(); System.out.println(hour); // 小時(shí)數(shù)加1 LocalTime addTwoHours = localTime.plusHours(2L); System.out.println(addTwoHours.getHour()); // 結(jié)果 16 18java.time.LocalDateTime
包含年月日時(shí)分秒,精確到納秒級(jí)別,同樣是線程安全并且不可變類。它可以操作時(shí)間中的年月日時(shí)分秒并且可以獲取其中的屬性。
LocalDateTime localDateTime = LocalDateTime.now(); // 獲取年 int year = localDateTime.getYear(); // 獲取小時(shí) int hour = localDateTime.getHour(); // 增加一年 LocalDateTime addOneYear = localDateTime.plusYears(1);結(jié)語
今天就先這樣啦,希望看到這篇博文的人能有所收獲,同樣,錯(cuò)誤之處還請(qǐng)幫忙指正。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70930.html
摘要:中的詳解必修個(gè)多線程問題總結(jié)個(gè)多線程問題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運(yùn)行原理從虛擬機(jī)工作流程看運(yùn)行原理。 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 自己實(shí)現(xiàn)集合框架 (三): 單鏈表的實(shí)現(xiàn) 基于 POI 封裝 ExcelUtil 精簡(jiǎn)的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對(duì)于 ...
摘要:本文主要內(nèi)容為簡(jiǎn)單總結(jié)中線程池的相關(guān)信息。方法簇方法簇用于創(chuàng)建固定線程數(shù)的線程池。三種常見線程池的對(duì)比上文總結(jié)了工具類創(chuàng)建常見線程池的方法,現(xiàn)對(duì)三種線程池區(qū)別進(jìn)行比較。 概述 線程可認(rèn)為是操作系統(tǒng)可調(diào)度的最小的程序執(zhí)行序列,一般作為進(jìn)程的組成部分,同一進(jìn)程中多個(gè)線程可共享該進(jìn)程的資源(如內(nèi)存等)。在單核處理器架構(gòu)下,操作系統(tǒng)一般使用分時(shí)的方式實(shí)現(xiàn)多線程;在多核處理器架構(gòu)下,多個(gè)線程能夠...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 3522·2021-11-24 09:39
閱讀 784·2019-08-30 14:22
閱讀 3036·2019-08-30 13:13
閱讀 2319·2019-08-29 17:06
閱讀 2923·2019-08-29 16:22
閱讀 1260·2019-08-29 10:58
閱讀 2436·2019-08-26 13:47
閱讀 1633·2019-08-26 11:39