C#日期格式化的幾個要點
日期格式化
標(biāo)準(zhǔn) DateTime 格式字符串
如果格式字符串只包含下表列出的某個單個格式說明符,則它們被解釋為標(biāo)準(zhǔn)格式說明符。如果指定的格式字符是單個字符并且不包含在下表中,則引發(fā)異常。如果格式字符串在長度上比單個字符長(即使多余的字符是空白),則格式字符串被解釋為自定義格式字符串。請注意,這些格式說明符產(chǎn)生的模式受“區(qū)域選項”控制面板中的設(shè)置的影響。具有不同區(qū)域性或不同日期與時間設(shè)置的計算機(jī)將顯示不同的模式。
格式字符串顯示的時間和日期分隔符由與當(dāng)前區(qū)域性的 DateTimeFormat 屬性關(guān)聯(lián)的 DateSeparator 和 TimeSeparator 字符定義。然而,如果 InvariantCulture 被“r”、“s”和“u”說明符引用,與 DateSeparator 和 TimeSeparator 字符關(guān)聯(lián)的字符不隨當(dāng)前區(qū)域性更改。下表描述了格式化 DateTime 對象的標(biāo)準(zhǔn)格式字符串。
d 短日期模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.ShortDatePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
D 長日期模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.LongDatePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
t 短時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.ShortTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
T 長時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.LongTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
f 完整日期/時間模式(短時間) 顯示長日期和短時間模式的組合,由空格分隔。
F 完整日期/時間模式(長時間) 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.FullDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
g 常規(guī)日期/時間模式(短時間) 顯示短日期和短時間模式的組合,由空格分隔。
G 常規(guī)日期/時間模式(長時間) 顯示短日期和長時間模式的組合,由空格分隔。
M 或 m 月日模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.MonthDayPattern 屬性定義的模式或者由指定格式提供程序定義的模式。
R 或 r RFC1123 模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.RFC1123Pattern 屬性定義的模式或者由指定格式提供程序定義的模式。這是定義的標(biāo)準(zhǔn),并且屬性是只讀的;因此,無論所使用的區(qū)域性或所提供的格式提供程序是什么,它總是相同的。屬性引用 CultureInfo.InvariantCulture 屬性并遵照自定義模式“ddd, dd MMMM yyyy HH:mm:ss G\MT”。請注意,“GMT”中的“M”需要轉(zhuǎn)義符,因此它不被解釋。
s 可排序的日期/時間模式;符合 ISO 8601 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.SortableDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。屬性引用 CultureInfo.InvariantCulture 屬性,格式遵照自定義模式“yyyy-MM-ddTHH:mm:ss”。
u 通用的可排序日期/時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.UniversalSortableDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。因為它是定義的標(biāo)準(zhǔn),并且屬性是只讀的,因此無論區(qū)域性或格式提供程序是什么,模式總是相同的。格式遵照自定義模式“yyyy-MM-dd HH:mm:ssZ”。
U 通用的可排序日期/時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.FullDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。請注意,顯示的時間是通用時間,而不是本地時間。
Y 或y 年月模式 顯示由與當(dāng)前線程關(guān)聯(lián)的DateTimeFormatInfo.YearMonthPattern 屬性定義的模式或者由指定格式提供程序定義的模式
下表顯示了格式說明符示例的列表,這些示例應(yīng)用于公開當(dāng)前日期和時間信息的 DateTime.Now 的任意值。示例中給出了不同的區(qū)域性設(shè)置以闡釋更改當(dāng)前區(qū)域性的影響。這通常以下面幾種方式更改:使用 Microsoft Windows 中的“日期/時間”控制面板,將您自己的 DateTimeFormatInfo 對象作為格式提供程序傳遞,或?qū)?CultureInfo 對象設(shè)置傳遞給不同的區(qū)域性。請注意,對于“r”和“s”格式,更改區(qū)域性不影響輸出。此表是說明標(biāo)準(zhǔn)日期和時間說明符如何影響格式化的快速指南。請參閱該表下面闡釋這些說明符的代碼示例部分。
格式說明符 當(dāng)前區(qū)域性 輸出
d en-US 4/10/2001
d en-NZ 10/04/2001
d de-DE 10.04.2001
D en-US Tuesday, April 10, 2001
T en-US 3:51:24 PM
T es-ES 15:51:24
f en-US Tuesday, April 10, 2001 3:51 PM
f fr-FR mardi 10 avril 2001 15:51
r en-US Tue, 10 Apr 2001 15:51:24 GMT
r zh-SG Tue, 10 Apr 2001 15:51:24 GMT
s en-US 2001-04-10T15:51:24
s pt-BR 2001-04-10T15:51:24
u en-US 2001-04-10 15:51:24Z
u sv-FI 2001-04-10 15:51:24Z
m en-US April 10
m ms-MY 10 April
y en-US April, 2001
y af-ZA April 2001
L en-UZ 無法識別的格式說明符;引發(fā)格式異常。
【編輯推薦】