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

學(xué)習(xí)Java之如何對(duì)時(shí)間進(jìn)行格式化

 更新時(shí)間:2023年05月31日 10:07:13   作者:一一哥Sun  
當(dāng)我們?cè)谀J(rèn)情況下構(gòu)造出來的時(shí)間對(duì)象,它的時(shí)間格式并不適合我們閱讀,并且在開發(fā)時(shí),pc端、Android端、iOS端等展示的時(shí)間格式可能也并不完全一樣,本文就從這幾個(gè)問題給大家介紹如何對(duì)時(shí)間進(jìn)行格式化,感興趣的同學(xué)可以借鑒一下

一. 時(shí)間模式字符串

在進(jìn)行時(shí)間格式化之前,我們先來了解一下時(shí)間模式字符串。所謂的時(shí)間模式字符串,就是可以用來指定時(shí)間格式的一種模式,在此模式中,一些ASCII字母被保留為模式字母,具有特別的含義,如下表所示:

字母描述示例
y四位年份2020
M月份July or 07
d一個(gè)月的日期10
hA.M./P.M. (1~12)格式小時(shí)12
H一天中的小時(shí) (0~23)22
m分鐘數(shù)30
s秒數(shù)55
S毫秒數(shù)234
E星期幾Tuesday
D一年中的日子360
F一個(gè)月中第幾周的周幾2 (second Wed. in July)
w一年中第幾周40
W一個(gè)月中第幾周1
aA.M.(上午)/P.M.(下午)PM
k一天中的小時(shí)(1~24)24
KA.M./P.M. (0~11)格式小時(shí)10
z時(shí)區(qū)Eastern Standard Time
'文字定界符Delimiter

上面表格中的這些符號(hào),我們盡量要記住,因?yàn)殚_發(fā)時(shí)經(jīng)常會(huì)用到這些符號(hào)。掌握了這些符號(hào)之后,我們就可以繼續(xù)學(xué)習(xí)日期與時(shí)間的格式化技能了。

二. printf()格式化方法

如果我們只是在項(xiàng)目的個(gè)別某個(gè)地方,想要簡(jiǎn)單地實(shí)現(xiàn)日期時(shí)間的格式化,其實(shí)使用printf()方法就可以。printf()方法格式化時(shí)間和日期時(shí),需要使用兩個(gè)字母進(jìn)行格式化操作,一般是以 %t 開頭,且以下面表格中的某個(gè)字母結(jié)尾。

轉(zhuǎn) 換 符說 明示 例
c包括全部日期和時(shí)間信息星期六 十月 27 14:21:20 CST 2007
F"年-月-日"格式2007-10-27
D"月/日/年"格式10/27/07
r"HH:MM:SS PM"格式(12時(shí)制)02:25:51 下午
T"HH:MM:SS"格式(24時(shí)制)14:28:16
R"HH:MM"格式(24時(shí)制)14:28

接下來我們通過一個(gè)案例來看看printf()方法是怎么進(jìn)行格式化時(shí)間的。

import java.util.Date;
/**
 * @author 
 */
public class Demo07 {
    public static void main(String[] args) {
	// 初始化 Date 對(duì)象
	Date date = new Date();
	//c:全部日期和時(shí)間
	System.out.printf("全部日期和時(shí)間信息:%tc%n", date);
	//f:年-月-日
	System.out.printf("年-月-日的格式:%tF%n", date);
	//d:月/日/年
	System.out.printf("月/日/年的格式:%tD%n", date);
	//r:HH:MM:SS PM
	System.out.printf("HH:MM:SS PM的格式(12時(shí)制):%tr%n", date);
	//t:HH:MM:SS格式(24時(shí)制)
	System.out.printf("HH:MM:SS的格式(24時(shí)制):%tT%n", date);
	//R:HH:MM格式(24時(shí)制)
	System.out.printf("HH:MM的格式(24時(shí)制):%tR", date);
        //用格式化字符串,指出要被格式化的參數(shù)索引,索引必須緊跟在%后面,而且必須以$結(jié)束
	//使用toString()顯示日期和時(shí)間
	System.out.printf("%1$s %2$tB %2$td, %2$tY","Due date:", date);
    }
}

printf()方法進(jìn)行格式化時(shí),需要結(jié)合上表中的幾個(gè)符號(hào)。但是說實(shí)話,這種格式化方式并不是很常用,主要適用于少量的個(gè)別地方。如果我們的項(xiàng)目中有多處需要進(jìn)行格式化的地方,盡量還是不要使用這種方式。因?yàn)槿绻阈枰貜?fù)提供日期,利用這種方式來格式化時(shí)間就有點(diǎn)復(fù)雜,且不好進(jìn)行后期的維護(hù)。

三. DateFormat類

其實(shí)我們?cè)贘ava項(xiàng)目中對(duì)日期進(jìn)行格式化,主要是利用一些日期格式化類,比如DateFormat及其子類。

1. 簡(jiǎn)介

DateFormat是負(fù)責(zé)日期/時(shí)間格式化的抽象類,它可以用與語言無關(guān)的方式格式化并解析日期或時(shí)間。它的子類(如SimpleDateFormat)允許進(jìn)行日期的格式化,將日期轉(zhuǎn)為文本;也可以進(jìn)行文本的解析,將文本轉(zhuǎn)為日期。
我們?cè)趧?chuàng)建 DateFormat對(duì)象時(shí)不能使用 new關(guān)鍵字,要使用 DateFormat類中的getDateInstance()靜態(tài)方法,如下所示:

DateFormat df = DateFormat.getDatelnstance();

2. 靜態(tài)常量

DateFormat中給我們提供了幾個(gè)常用的靜態(tài)常量,用于方便我們進(jìn)行格式化樣式的設(shè)置,如下所示:

  • SHORT:純數(shù)字,如12.5.10 或 5:30pm;
  • MEDIUM:較長(zhǎng),如May 10,2023;
  • LONG:更長(zhǎng),如May 12,2023 或 11:15:32am;
  • FULL:完全指定,如Tuesday、May 10、2022 AD 或 11:l5:42am CST。

3. 常用方法

我們?cè)趧?chuàng)建了一個(gè)DateFormat對(duì)象后,就可以使用該對(duì)象中的方法來對(duì)日期/時(shí)間進(jìn)行格式化了,DateFormat中的常用方法如下表所示:

方法描述
String format(Date date)將 Date 格式化日期/時(shí)間字符串
Calendar getCalendar()獲取與此日期/時(shí)間格式相關(guān)聯(lián)的日歷
static DateFormat getDateInstance()獲取具有默認(rèn)格式化風(fēng)格和默認(rèn)語言環(huán)境的日期格式
static DateFormat getDateInstance(int style)獲取具有指定格式化風(fēng)格和默認(rèn)語言環(huán)境的日期格式
static DateFormat getDateInstance(int style, Locale locale)獲取具有指定格式化風(fēng)格和指定語言環(huán)境的日期格式
static DateFormat getDateTimeInstance()獲取具有默認(rèn)格式化風(fēng)格和默認(rèn)語言環(huán)境的日期/時(shí)間格式
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle)獲取具有指定日期/時(shí)間格式化風(fēng)格和默認(rèn)語言環(huán)境的日期/時(shí)間格式
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale)獲取具有指定日期/時(shí)間格式化風(fēng)格和指定語言環(huán)境的日期/時(shí)間格式
static DateFormat getTimeInstance()獲取具有默認(rèn)格式化風(fēng)格和默認(rèn)語言環(huán)境的時(shí)間格式
static DateFormat getTimeInstance(int style)獲取具有指定格式化風(fēng)格和默認(rèn)語言環(huán)境的時(shí)間格式
static DateFormat getTimeInstance(int style, Locale locale)獲取具有指定格式化風(fēng)格和指定語言環(huán)境的時(shí)間格式
void setCalendar(Calendar newCalendar)為此格式設(shè)置日歷
Date parse(String source)將給定的字符串解析成日期/時(shí)間

4. 基本使用

接下來我們通過一個(gè)案例來看看DateFormat的用法。這個(gè)案例,主要是給大家介紹DateFormat類的方法與靜態(tài)常量該如何使用,對(duì)日期進(jìn)行不同風(fēng)格的格式化。

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
/**
 * @author
 */
public class Demo08 {
    public static void main(String[] args) {
	// 獲取不同格式化風(fēng)格和中國環(huán)境的日期
	DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
	//DateFormat df2 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
	//DateFormat df3 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
	//DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
	// 將不同格式化風(fēng)格的日期格式化為日期字符串
	String date = df1.format(new Date());
	// 獲取不同格式化風(fēng)格和中國環(huán)境的時(shí)間
	DateFormat df2 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA);
	// 將不同格式化風(fēng)格的時(shí)間格式化為時(shí)間字符串
	String time = df2.format(new Date());
	// 輸出日期和時(shí)間
	System.out.println("SHORT格式:" + date+" "+time);
    }
}

四. SimpleDateFormat類

1. 簡(jiǎn)介

雖然我們已經(jīng)有了DateFormat,但有時(shí)候這個(gè)類并不能滿足我們的實(shí)際開發(fā)需求。此時(shí)我們可以進(jìn)一步使用它的子類,比如SimpleDateFormat來進(jìn)行更多的操作。

SimpleDateFormat是一個(gè)以與語言環(huán)境有關(guān)的方式來格式化和解析日期的具體類,它具有格式化(日期轉(zhuǎn)文本)、解析(文本轉(zhuǎn)日期)和規(guī)范化的功能。相對(duì)DateFormat來說,SimpleDateFormat具有更高的靈活性,可以讓我們選擇任何自定義的日期/時(shí)間格式,進(jìn)行個(gè)性化設(shè)置。

2. 構(gòu)造方法

SimpleDateFormat是一個(gè)具體的子類,所以我們是可以通過new的方式來創(chuàng)建對(duì)象的。SimpleDateFormat類為我們提供了如下4個(gè)構(gòu)造方法:

  • SimpleDateFormat():用默認(rèn)的格式和語言環(huán)境,構(gòu)造一個(gè)SimpleDateFormat對(duì)象;
  • SimpleDateFormat(String pattern):用指定的格式和默認(rèn)的語言環(huán)境,構(gòu)造一個(gè)SimpleDateF ormat對(duì)象;
  • SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的語言環(huán)境,構(gòu)造一個(gè) SimpleDateFormat對(duì)象;
  • SimpleDateFormat(String pattern,DateFormatSymbols formatSymbols):用指定的格式和指定的格式化語法來構(gòu)造一個(gè)SimpleDateFormat對(duì)象。

3. 自定義格式化常用字母

SimpleDateFormat自定義格式中常用的字母及含義如表 2 所示。

字母含義示例
y年份。一般用 yy 表示兩位年份,yyyy 表示 4 位年份使用 yy 表示的年扮,如 11; 使用 yyyy 表示的年份,如 2011
M月份。一般用 MM 表示月份,如果使用 MMM,則會(huì)根據(jù)語言環(huán)境顯示不同語言的月份使用 MM 表示的月份,如 05; 使用 MMM 表示月份,在 Locale.CHINA 語言環(huán)境下,如“十月”;在 Locale.US 語言環(huán)境下,如 Oct
d月份中的天數(shù)。一般用 dd 表示天數(shù)使用 dd 表示的天數(shù),如 10
D年份中的天數(shù)。表示當(dāng)天是當(dāng)年的第幾天, 用 D 表示使用 D 表示的年份中的天數(shù),如 295
E星期幾。用 E 表示,會(huì)根據(jù)語言環(huán)境的不同, 顯示不同語言的星期幾使用 E 表示星期幾,在 Locale.CHINA 語 言環(huán)境下,如“星期四”;在 Locale.US 語 言環(huán)境下,如 Thu
H一天中的小時(shí)數(shù)(0~23)。一般用 HH 表示小時(shí)數(shù)使用 HH 表示的小時(shí)數(shù),如 18
h一天中的小時(shí)數(shù)(1~12)。一般使用 hh 表示小時(shí)數(shù)使用 hh 表示的小時(shí)數(shù),如 10 (注意 10 有 可能是 10 點(diǎn),也可能是 22 點(diǎn))
m分鐘數(shù)。一般使用 mm 表示分鐘數(shù)使用 mm 表示的分鐘數(shù),如 29
s秒數(shù)。一般使用 ss 表示秒數(shù)使用 ss 表示的秒數(shù),如 38
S毫秒數(shù)。一般使用 SSS 表示毫秒數(shù)使用 SSS 表示的毫秒數(shù),如 156

4. 基本使用

接下來我們通過一個(gè)案例,來展示SimpleDateFormat的格式化和解析用法。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * @author
 */
public class Demo09 {
    public static void main(String[] args) {
	//設(shè)置日期時(shí)間格式化模式,這個(gè)模式是根據(jù)需求自定義展示的,也可以是"yyyy年MM月dd日 E HH點(diǎn) mm分 ss秒"等格式
	SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	//進(jìn)行日期格式化
	String date = format.format(new Date());
	System.out.println("格式后的結(jié)果:" + date);
	try {
            //解析日期,將一個(gè)時(shí)間字符串解析為Date類型,這里有可能會(huì)產(chǎn)生解析異常
            String time="2022-02-12 17:30:39";
            Date date2 = format.parse(time);
            System.out.println("解析后的結(jié)果:" + date2);
	} catch (ParseException e) {
            e.printStackTrace();
	}
    }
}

在上述案例中,format()方法用于將Date格式化為String字符串,parse()方法用于將String字符串解析為Date類型。其中yyyy是完整的公元年,MM是月份,dd是日期,HH:mm:ss 是時(shí)、分、秒。這里有的格式大寫,有的格式小寫,例如MM是月份,mm是分,HH是24小時(shí)制,而hh則是12小時(shí)制。

五. 結(jié)語

至此,就把日期的格式化操作給大家講解完畢了。今天的內(nèi)容其實(shí)并不難,大家只需要把一些常用的構(gòu)造方式及方法、常量記一下即可。

以上就是學(xué)習(xí)Java之如何對(duì)時(shí)間進(jìn)行格式化的詳細(xì)內(nèi)容,更多關(guān)于Java 時(shí)間格式化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Linux中使用shell腳本管理Java應(yīng)用程序

    Linux中使用shell腳本管理Java應(yīng)用程序

    在日常開發(fā)和運(yùn)維工作中,管理基于Java的應(yīng)用程序是一項(xiàng)基礎(chǔ)且頻繁的任務(wù),本文將通過一個(gè)示例腳本,展示如何利用Shell腳本簡(jiǎn)化這一流程,實(shí)現(xiàn)Java應(yīng)用的一鍵式啟動(dòng)、停止與重啟操作,本腳本不僅提升了工作效率,還確保了操作的標(biāo)準(zhǔn)化與可靠性
    2024-06-06
  • Java中FileWriter的用法及wirte()重載方法詳解

    Java中FileWriter的用法及wirte()重載方法詳解

    這篇文章主要介紹了Java中FileWriter的用法及wirte()重載方法詳解,FileWriter是Java編程語言中的一個(gè)類,用于將字符寫入文件,它提供了一種簡(jiǎn)單而方便的方式來創(chuàng)建、打開和寫入文件,通過使用FileWriter,我們可以將字符數(shù)據(jù)寫入文本文件,需要的朋友可以參考下
    2023-10-10
  • Java8進(jìn)行多個(gè)字段分組統(tǒng)計(jì)的實(shí)例代碼

    Java8進(jìn)行多個(gè)字段分組統(tǒng)計(jì)的實(shí)例代碼

    在本篇文章里小編給大家分享的是關(guān)于Java8進(jìn)行多個(gè)字段分組統(tǒng)計(jì)的實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • java編程枚舉類型那些事!枚舉類型定義和重寫枚舉的方法

    java編程枚舉類型那些事!枚舉類型定義和重寫枚舉的方法

    本文主要介紹了枚舉類型的有關(guān)內(nèi)容,涉及簡(jiǎn)單的枚舉類型定義,以及枚舉類型的值在Java中的定義方法,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Hibernate核心類和接口的詳細(xì)介紹

    Hibernate核心類和接口的詳細(xì)介紹

    今天小編就為大家分享一篇關(guān)于Hibernate核心類和接口的詳細(xì)介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • idea使用war以及war exploded的區(qū)別說明

    idea使用war以及war exploded的區(qū)別說明

    本文詳細(xì)解析了war與warexploded兩種部署方式的差異及步驟,war方式是先打包成war包,再部署到服務(wù)器上;warexploded方式是直接把文件夾、class文件等移到Tomcat上部署,支持熱部署,開發(fā)時(shí)常用,文章分別列出了warexploded模式和war包形式的具體操作步驟
    2024-10-10
  • Java Spring使用hutool的HttpRequest發(fā)送請(qǐng)求的幾種方式

    Java Spring使用hutool的HttpRequest發(fā)送請(qǐng)求的幾種方式

    文章介紹了Hutool庫中用于發(fā)送HTTP請(qǐng)求的工具,包括添加依賴、發(fā)送GET和POST請(qǐng)求的方法,以及GET請(qǐng)求的不同參數(shù)傳遞方式,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Spring Bean生命周期源碼原理圖解

    Spring Bean生命周期源碼原理圖解

    這篇文章主要介紹了Spring Bean生命周期源碼原理圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 查看import的類是出自哪個(gè)jar包的方法

    查看import的類是出自哪個(gè)jar包的方法

    下面小編就為大家?guī)硪黄榭磇mport的類是出自哪個(gè)jar包的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • SpringBoot解析yml全流程詳解

    SpringBoot解析yml全流程詳解

    本文主要介紹了SpringBoot解析yml全流程詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論