最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一. 時間模式字符串

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

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

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

二. printf()格式化方法

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

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

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

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

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

三. DateFormat類

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

1. 簡介

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

DateFormat df = DateFormat.getDatelnstance();

2. 靜態(tài)常量

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

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

3. 常用方法

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

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

4. 基本使用

接下來我們通過一個案例來看看DateFormat的用法。這個案例,主要是給大家介紹DateFormat類的方法與靜態(tài)常量該如何使用,對日期進(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)境的時間
	DateFormat df2 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA);
	// 將不同格式化風(fēng)格的時間格式化為時間字符串
	String time = df2.format(new Date());
	// 輸出日期和時間
	System.out.println("SHORT格式:" + date+" "+time);
    }
}

四. SimpleDateFormat類

1. 簡介

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

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

2. 構(gòu)造方法

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

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

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

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

字母含義示例
y年份。一般用 yy 表示兩位年份,yyyy 表示 4 位年份使用 yy 表示的年扮,如 11; 使用 yyyy 表示的年份,如 2011
M月份。一般用 MM 表示月份,如果使用 MMM,則會根據(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 表示,會根據(jù)語言環(huán)境的不同, 顯示不同語言的星期幾使用 E 表示星期幾,在 Locale.CHINA 語 言環(huán)境下,如“星期四”;在 Locale.US 語 言環(huán)境下,如 Thu
H一天中的小時數(shù)(0~23)。一般用 HH 表示小時數(shù)使用 HH 表示的小時數(shù),如 18
h一天中的小時數(shù)(1~12)。一般使用 hh 表示小時數(shù)使用 hh 表示的小時數(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. 基本使用

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

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * @author
 */
public class Demo09 {
    public static void main(String[] args) {
	//設(shè)置日期時間格式化模式,這個模式是根據(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 {
            //解析日期,將一個時間字符串解析為Date類型,這里有可能會產(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 是時、分、秒。這里有的格式大寫,有的格式小寫,例如MM是月份,mm是分,HH是24小時制,而hh則是12小時制。

五. 結(jié)語

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

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

相關(guān)文章

最新評論

澄城县| 中江县| 安溪县| 横峰县| 陇西县| 洛南县| 贡觉县| 东辽县| 读书| 沅陵县| 根河市| 高唐县| 炉霍县| 马公市| 喀什市| 武邑县| 四子王旗| 田林县| 威海市| 云梦县| 中方县| 长丰县| 河间市| 迁安市| 宁陕县| 溆浦县| 通城县| 醴陵市| 泗水县| 英超| 宣威市| 永修县| 苗栗市| 防城港市| 偃师市| 邢台县| 资源县| 天祝| 安溪县| 邵东县| 临夏市|