日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JAVA 格式化日期、時間的方法

瀏覽:23日期:2022-08-30 16:51:33

使用 DateFormat 格式化日期、時間

DateFormat 也是一個抽象類,它也提供了如下幾個類方法用于獲取 DateFormat 對象。

getDateInstance():返回一個日期格式器,它格式化后的字符串只有日期,沒有時間。該方法可以傳入多個參數,用于指定日期樣式和 Locale 等參數;如果不指定這些參數,則使用默認參數。 getTimeInstance():返回一個時間格式器,它格式化后的字符串只有時間,沒有日期。該方法可以傳入多個參數,用于指定時間樣式和 Locale 等參數;如果不指定這些參數,則使用默認參數。 getDateTimeInstance():返回一個日期、時間格式器,它格式化后的字符串既有日期,也有時間。該方法可以傳入多個參數,用于指定日期樣式、時間樣式和 Locale 等參數;如果不指定這些參數,則使用默認參數。

上面三個方法可以指定日期樣式、時間樣式參數,它們是的4個靜態常量:FULL、LONG、MEDIUM 和 SHORT,通過這4個樣式參數可以控制生成的格式化字符串。看如下例子程序。

import java.util.*;import java.text.*;import static java.text.DateFormat.*;public class DateFormatTest { public static void main(String[] args) throws ParseException { // 需要被格式化的時間 Date dt = new Date(); // 創建兩個Locale,分別代表中國、美國 Locale[] locales = { Locale.CHINA, Locale.US }; DateFormat[] df = new DateFormat[16]; // 為上面兩個Locale創建16個DateFormat對象 for (int i = 0; i < locales.length; i++) { df[i * 8] = DateFormat.getDateInstance(SHORT, locales[i]); df[i * 8 + 1] = DateFormat.getDateInstance(MEDIUM, locales[i]); df[i * 8 + 2] = DateFormat.getDateInstance(LONG, locales[i]); df[i * 8 + 3] = DateFormat.getDateInstance(FULL, locales[i]); df[i * 8 + 4] = DateFormat.getTimeInstance(SHORT, locales[i]); df[i * 8 + 5] = DateFormat.getTimeInstance(MEDIUM, locales[i]); df[i * 8 + 6] = DateFormat.getTimeInstance(LONG, locales[i]); df[i * 8 + 7] = DateFormat.getTimeInstance(FULL, locales[i]); } for (int i = 0; i < locales.length; i++) { String tip = i == 0 ? '----中國日期格式----' : '----美國日期格式----'; System.out.println(tip); System.out.println('SHORT格式的日期格式:' + df[i * 8].format(dt)); System.out.println('MEDIUM格式的日期格式:' + df[i * 8 + 1].format(dt)); System.out.println('LONG格式的日期格式:' + df[i * 8 + 2].format(dt)); System.out.println('FULL格式的日期格式:' + df[i * 8 + 3].format(dt)); System.out.println('SHORT格式的時間格式:' + df[i * 8 + 4].format(dt)); System.out.println('MEDIUM格式的時間格式:' + df[i * 8 + 5].format(dt)); System.out.println('LONG格式的時間格式:' + df[i * 8 + 6].format(dt)); System.out.println('FULL格式的時間格式:' + df[i * 8 + 7].format(dt)); } }}

上面程序共創建了16個 DateFormat 對象,分別為中國、美國兩個 Locale 各創建8個 DateFormat 對象,分別是 SHORT、MEDIUM、LONG、FULL 四種樣式的日期格式器、時間格式器。運行上面程序,會看到如下所示的效果。

----中國日期格式----SHORT格式的日期格式:20-2-11MEDIUM格式的日期格式:2020-2-11LONG格式的日期格式:2020年2月11日FULL格式的日期格式:2020年2月11日 星期二SHORT格式的時間格式:下午2:26MEDIUM格式的時間格式:14:26:21LONG格式的時間格式:下午02時26分21秒FULL格式的時間格式:下午02時26分21秒 CST----美國日期格式----SHORT格式的日期格式:2/11/20MEDIUM格式的日期格式:Feb 11, 2020LONG格式的日期格式:February 11, 2020FULL格式的日期格式:Tuesday, February 11, 2020SHORT格式的時間格式:2:26 PMMEDIUM格式的時間格式:2:26:21 PMLONG格式的時間格式:2:26:21 PM CSTFULL格式的時間格式:2:26:21 PM CST

DateFormat 具有國際化的能力,同一個日期使用不同的 Locale 格式器格式化的效果完全不同,格式化后的字符串正好符合 Locale 對應的本地習慣。

獲得了 DateFormat 之后,還可以調用它的 setLenient(boolean lenient) 方法來設置該格式器是否采用嚴格語法。舉例來說,如果采用不嚴格的日期語法(該方法的參數為true),對于字符串'2004-2-31'將會轉換成2004年3月2日:如果采用嚴格的日期語法,解析該字符串時將拋出異常。

DateFormat 的 parse() 方法可以把一個字符串解析成 Date 對象,但它要求被解析的字符串必須符合日期字符串的要求,否則可能拋出 ParseExcepuon 異常。例如,如下代碼片段:

String str1 = '2017/10/07';String str2 = '2017年10月07日';// 下面輸出 Sat Oct 07 00:00:00 CST 2017System.out.println(DateFormat.getDateInstance().parse(str2));// 下面輸出 Sat Oct 07 00:00:00 CST 2017System.out.println(DateFormat.getDateInstance(SHORT).parse(str1));// 下面拋出 ParseException異常System.out.println(DateFormat.getDateInstance().parse(str1));

上面代碼中最后一行代碼解析日期字符串時引發 ParseException 異常,因為'2017/10/07'是一個 SHORT 樣式的日期字符串,必須用 SHORT 樣式的 DateFormat 實例解析,否則將拋出異常。

使用 SimpleDateFormat 格式化日期

前面介紹的 DateFormat 的方法可以把字符串解析成 Date 對象,但實際上 DateFormat 的 parse() 方法不夠靈活一一它要求被解析的字符串必須滿足特定的格式!為了更好地格式化日期、解析日期字符串,Java 提供了 SimpleDateFormat 類。

SimpleDateFormat 是 DateFormat 的子類,正如它的名字所暗示的,它是“簡單”的日期格式器。很多讀者對“簡單”的日期格式器不屑一顧,實際上 SimpleDateFormat 比 DateFormat 更簡單,功能更強大。

SimpleDateFormat 可以非常靈活地格式化 Date,也可以用于解析各種格式的日期字符串。創建 SimpleDateFormat 對象時需要傳入一個 pattern 字符串,這個 pattern 不是正則表達式,而是一個日期模板字符串。

import java.text.*;import java.util.*;public class SimpleDateFormatTest { public static void main(String[] args) throws ParseException { Date d = new Date(); // 創建一個SimpleDateFormat對象 SimpleDateFormat sdf1 = new SimpleDateFormat('Gyyyy年中第D天'); // 將d格式化成日期,輸出:公元2017年中第282天 String dateStr = sdf1.format(d); System.out.println(dateStr); // 一個非常特殊的日期字符串 String str = '14###3月##21'; SimpleDateFormat sdf2 = new SimpleDateFormat('y###MMM##d'); // 將日期字符串解析成日期,輸出:Fri Mar 21 00:00:00 CST 2014 System.out.println(sdf2.parse(str)); }}

從上面程序中可以看出,使用 SimpleDateFormat 可以將日期格式化成形如“公元2014年中第101天”這樣的字符串,也可以把形如“14###3月##21”這樣的字符串解析成日期,功能非常強大。

SimpleDateFormat 把日期格式化成怎樣的字符串,以及能把怎樣的字符串解析成 Date,完全取決于創建該對象時指定的 pattern 參數,pattern 是一個使用日期字段占位符的日期模板。

如果讀者想知道 SimpleDateFormat 支持哪些日期、時間占位符,可以查閱 API 文檔中 SimpleDateFormat 類的說明,此處不再贅述。

Java 8 新增的日期、時間格式器

Java 8 新增的日期、時間 API 里不僅包括了 Instant、LocalDate、LocalDateTime、LocalTime 等代表日期、時間的類,而且在 java.time.format 包下提供了一個 DateTimeFormatter 格式器類,該類相當于前面介紹的 DateFormat 和 SimpleDateFormat 的合體,功能非常強大。

與 DateFormat、SimpleDateFormat 類似,DateTimeFormatter 不僅可以將日期、時間對象格式化成字符串,也可以將特定格式的字符串解析成日期、時間對象。

為了使用 DateTimeFormatter 進行格式化或解析,必須先獲取 DateTimeFormatter 對象,獲取 DateTimeFormatter 對象有如下三種常見的方式。

直接使用靜態常量創建 DateTimeFormatter 格式器。DateTimeFormatter 類中包含了大量形如 ISO_LOCAL_DATE、ISO_LOCAL_TIME、ISO_LOCAL_DATE_TIME 等靜態常量,這些靜態常量本身就是 DateTimeFormatter 實例。 使用代表不同風格的枚舉值來創建 DateTimeFormatter 格式器。在 FormatStyle 枚舉類中定義了 FULL、LONG、MEDIUM、SHORT 四個枚舉值,它們代表日期、時間的不同風格。 根據模式字符串來創建 DateTmeFormatter 格式器。類似于 SimpleDateFormat,可以采用模式字符串來創建 DateTimeFormatter,如果需要了解支持哪些模式字符串,則需要參該類的 API 文檔。

使用 DateTimeFormatter 完成格式化

使用 DateTimeFormatter 將日期、時間(LocalDate、LocalDateTime、LocalTime等實例)格式化為字符串,可通過如下兩種方式。

調用 DateTimeFormatter 的 format(TemporalAccessor temporal) 方法執行格式化,其中 LocalDate、LocalDateTime、LocalTime 等類都是 TemporalAccessor 接口的實現類。 調用 LocalDate、LocalDateTime、LocalTime 等日期、時間對象的 format(DateTimeFormatter formatter) 方法執行格式化。

上面兩種方式的功能相同,用法也基本相似,如下程序示范了使用 DateTimeFormatter 來格式化日期、時間。

import java.time.*;import java.time.format.*;public class NewFormatterTest{ public static void main(String[] args){ DateTimeFormatter[] formatters = new DateTimeFormatter[]{ // 直接使用常量創建DateTimeFormatter格式器 DateTimeFormatter.ISO_LOCAL_DATE, DateTimeFormatter.ISO_LOCAL_TIME, DateTimeFormatter.ISO_LOCAL_DATE_TIME, // 使用本地化的不同風格來創建DateTimeFormatter格式器 DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM), DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG), // 根據模式字符串來創建DateTimeFormatter格式器 DateTimeFormatter.ofPattern('Gyyyy%%MMM%%dd HH:mm:ss') }; LocalDateTime date = LocalDateTime.now(); // 依次使用不同的格式器對LocalDateTime進行格式化 for(int i = 0 ; i < formatters.length ; i++){ // 下面兩行代碼的作用相同 System.out.println(date.format(formatters[i])); System.out.println(formatters[i].format(date)); } }}

上面程序使用三種方式創建了6個 DateTimeFormatter 對象,然后程序中兩行粗體字代碼分別使用不同方式來格式化日期。運行上面程序,會看到如下所示的效果。

2020-02-112020-02-1117:13:00.30317:13:00.3032020-02-11T17:13:00.3032020-02-11T17:13:00.3032020年2月11日 星期二 17:13:002020年2月11日 星期二 17:13:002020年2月11日2020年2月11日公元2020%%二月%%11 17:13:00公元2020%%二月%%11 17:13:00

可以看出,使用 DateTimeFormatter 進行格式化,也可使用模式字符串對日期、時間進行自定義格式化,由此可見,功能完全覆蓋了傳統的 DateFormat、SimpleDateFormate 的功能。

提示:有些時候,讀者可能還需要使用傳統的 DateFormat 來執行格式化,DateTimeFormatter 則提供了一個 toFormat() 方法,該方法可以獲取 DateTimeFormatter 對應的 Format 對象。

使用 DateTimeFormatter 解析字符串

為了使用 DateTimeFormatter 將指定格式的字符串解析成日期、時間對象(LocalDate、LocalDateTime、LocalTime 等實例),可通過日期、時間對象提供的 parse(CharSequence text,DateTimeFormatter formatter) 方法進行解析。

如下程序示范了使用 DateTimeFormatter 解析日期、時間字符串。

import java.time.*;import java.time.format.*;public class NewFormatterParse { public static void main(String[] args) { // 定義一個任意格式的日期時間字符串 String str1 = '2014==04==12 01時06分09秒'; // 根據需要解析的日期、時間字符串定義解析所用的格式器 DateTimeFormatter fomatter1 = DateTimeFormatter.ofPattern('yyyy==MM==dd HH時mm分ss秒'); // 執行解析 LocalDateTime dt1 = LocalDateTime.parse(str1, fomatter1); System.out.println(dt1); // 輸出 2014-04-12T01:06:09 // ---下面代碼再次解析另一個字符串--- String str2 = '2014$$$4月$$$13 20小時'; DateTimeFormatter fomatter2 = DateTimeFormatter.ofPattern('yyy$$$MMM$$$dd HH小時'); LocalDateTime dt2 = LocalDateTime.parse(str2, fomatter2); System.out.println(dt2); // 輸出 2014-04-13T20:00 }}

上面程序中定義了兩個不同格式的日期、時間字符串,為了解析它們,程序分別使用對應的格式字符串創建了 DateTmeFormatter 對象,這樣 DateTimeFormatter 即可按該格式字符串將日期、時間字符串解析成 LocalDateTime 對象。編譯、運行該程序,即可看到兩個日期、時間字符串都被成功地解析成 LocalDateTime。

以上就是JAVA 格式化日期、時間的方法的詳細內容,更多關于JAVA 格式化日期、時間的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
西西人体一区二区| 欧美中文一区| 夜久久久久久| 国产精品二区不卡| 久久国产精品99国产| 精品国产欧美日韩| 7m精品国产导航在线| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩在线麻豆| 精品视频久久| 日韩中文在线电影| 国产精品伦一区二区| 日韩精品第一| 日韩在线卡一卡二| 最新亚洲激情| 欧洲亚洲一区二区三区| 国产一区二区三区四区五区传媒| 欧美一区激情| 久久97久久97精品免视看秋霞| 亚洲精品人人| 中文字幕人成乱码在线观看 | 国产婷婷精品| 99riav国产精品| 国产欧美高清| 亚洲天堂1区| 日韩欧美中文字幕一区二区三区| 久久只有精品| 国产精品老牛| 国产精品**亚洲精品| 国产精品久久久久av蜜臀| 国产欧美在线观看免费| 久久久久久久久丰满| 国产伦理久久久久久妇女| 日韩毛片在线| 欧美日韩亚洲一区三区| 亚洲美洲欧洲综合国产一区| 国产精品一线天粉嫩av| 亚洲成人精选| 久久精品系列| 亚洲aa在线| 激情91久久| 午夜精品成人av| 国产精品亚洲一区二区在线观看| av日韩中文| 日韩高清在线不卡| 国产农村妇女精品一二区| 高清av一区| 久久av电影| 国产精品99精品一区二区三区∴ | 日本欧美韩国一区三区| 69堂精品视频在线播放| 国产婷婷精品| 欧美~级网站不卡| 91精品国产福利在线观看麻豆| 久久亚洲精品中文字幕| 欧美视频一区| 亚洲视频二区| 午夜一级在线看亚洲| 久久久久国产| 日韩免费福利视频| 久久久五月天| 尤物在线精品| 日韩亚洲在线| 日韩精品三级| 国产精品综合| 精品五月天堂| 香蕉成人av| 日韩中文字幕亚洲一区二区va在线| 自拍日韩欧美| 亚洲区欧美区| 免费在线成人| 麻豆精品国产91久久久久久| 精品精品99| 成人一二三区| 国产剧情一区| 中文字幕一区久| 日韩高清不卡| 综合色一区二区| 国产精品久久久久久久久久妞妞| 久久永久免费| 欧美日韩中文字幕一区二区三区| 亚洲神马久久| 国产精品极品在线观看| 特黄毛片在线观看| 免费成人性网站| 欧美日韩中文| 国产一区二区三区天码| 欧美1区免费| 奇米狠狠一区二区三区| 国产美女高潮在线观看| 久久亚洲风情| av中文字幕在线观看第一页| 婷婷色综合网| 鲁大师精品99久久久| 野花国产精品入口| 精品网站999| 首页欧美精品中文字幕| 欧美视频精品全部免费观看| 日产欧产美韩系列久久99| 精品黄色一级片| 日本亚洲最大的色成网站www | 另类av一区二区| 欧美黑人巨大videos精品| 国产亚洲福利| 国产精品精品| 国产精品网在线观看| 亚洲欧美日韩国产| 日韩一区电影| 久久精品国产成人一区二区三区| 蜜臀精品久久久久久蜜臀 | 国产免费久久| 蜜桃久久久久久久| 欧美二区视频| 久久精品官网| 福利在线免费视频| 国产a亚洲精品| 亚洲麻豆一区| 黑人精品一区| 成人在线视频中文字幕| 国产精区一区二区| 91成人在线精品视频| 中文字幕中文字幕精品| 激情五月色综合国产精品| 卡一精品卡二卡三网站乱码| 日韩国产91| 国产免费av一区二区三区| 国产情侣一区| 国产精品亚洲综合色区韩国| 91麻豆精品| 久久av网址| 日韩成人综合| 欧美日韩在线观看首页| 国产欧美一区二区三区精品酒店| 91偷拍一区二区三区精品| 欧美三区四区| 免费久久99精品国产自在现线| 午夜精品影视国产一区在线麻豆| 亚洲专区欧美专区| 亚洲毛片在线免费| 国产精品一站二站| 久久uomeier| 91久久在线| 亚洲一区二区三区高清| 国产欧洲在线| 1024精品一区二区三区| 亚洲一区二区三区高清| 婷婷久久免费视频| 国产精品v一区二区三区| 六月婷婷综合| 国内精品亚洲| 91精品一区二区三区综合在线爱| 国产亚洲在线观看| 你懂的国产精品| 91视频一区| 日韩一区二区三免费高清在线观看| 久久精品99久久久| 午夜精品成人av| 欧美日韩一区二区高清| 99久久99久久精品国产片果冰 | 日韩一区电影| 中文字幕乱码亚洲无线精品一区| 国产精品成人自拍| 国产精品外国| 精品国产精品国产偷麻豆| 黄色日韩在线| 欧美丰满日韩| 亚洲三级在线| 伊人久久高清| av综合电影网站| 久久精品五月| 香蕉人人精品| 国产成人免费视频网站视频社区| 一级欧洲+日本+国产| 国产一区二区久久久久| 日韩**一区毛片| 亚洲视频播放| 亚洲成人国产| 久久精品欧洲| 久久精品网址| 中文不卡在线| 亚洲激情二区| 三级小说欧洲区亚洲区| 国产精品一站二站| 日韩欧美2区| 中文字幕av一区二区三区四区| 国产综合色产| 九九综合九九| 激情久久五月| 欧美成人久久| 亚洲天堂久久| 国产一区欧美| 99久久精品费精品国产| 成人精品亚洲| 欧美日韩黑人| 亚洲综合日本| 亚洲午夜国产成人| 婷婷综合福利| 国产麻豆一区二区三区精品视频| 欧美亚洲国产日韩| 精品中文字幕一区二区三区|