Previous topicNext topic
Help > 开发指南 > 编程基础 > 格式化 >
日期自定义格式化

日期自定义格式化文本主要有以下几种

格式化文本

类型

示例

输出

说明

d

单个天数

{0:d}

1

将月中日期表示为从 1 31 的数字。一位数字的日期设置为不带前导零的格式。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

dd

两位天数y

{0:dd}

10

将月中日期表示为从 01 31 的数字。一位数字的日期设置为带前导零的格式。

ddd

日期的短名称

{0:ddd}

Tue

将一周中某天的缩写名称表示为当前 System.Globalization.DateTimeFormatInfo.AbbreviatedDayNames 属性中定义的名称。

dddd

日期的全名称

{0:dddd}

Tuesday

将一周中某天的全名表示为当前 System.Globalization.DateTimeFormatInfo.DayNames 属性中定义的名称。

f, ff, ...

毫秒的精度

{0:fff}

932

表示部分的最高有效位。

请注意,如果“f”格式说明符单独使用,没有其他格式说明符,则该说明符被看作是“f”标准 DateTime 格式说明符(完整日期/时间模式)。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

将此格式说明符与 ParseExact TryParseExact 方法一起使用时,所用“f”格式说明符的数目指示要分析的秒部分的最高有效位位数。

g/gg, ...

时期或纪元

{0:gg}

A.D.

表示时期或纪元(例如 A.D.)。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该说明符。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

hh

212小时制表达

{0:hh}

10

将小时表示为从 01 12 的数字,即通过 12 小时制表示小时,自午夜或中午开始对整小时计数。因此,午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。小时数不进行舍入,一位数字的小时数设置为带前导零的格式。例如,给定时间为 5:43,则此格式说明符显示“05”。

HH

224小时制表达

{0:HH}

22

将小时表示为从 00 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对小时计数。一位数字的小时数设置为带前导零的格式。

mm

分钟

{0:mm}

38

将分钟表示为从 00 59 的数字。分钟表示自前一小时后经过的整分钟数。一位数字的分钟数设置为带前导零的格式。

MM

月份

{0:MM}

12

将月份表示为从 01 12 的数字。一位数字的月份设置为带前导零的格式。

MMM

月份简写

{0:MMM}

Dec

将月份的缩写名称表示为当前 System.Globalization.DateTimeFormatInfo.AbbreviatedMonthNames 属性中定义的名称。

MMMM

月份全名

{0:MMMM}

December

将月份的全名表示为当前 System.Globalization.DateTimeFormatInfo.MonthNames 属性中定义的名称。

ss

分钟

{0:ss}

46

将秒表示为从 00 59 的数字。秒表示自前一分钟后经过的整秒数。一位数字的秒数设置为带前导零的格式。

tt

AM or PM

{0:tt}

PM

A.M./P.M. 指示符表示为当前 System.Globalization.DateTimeFormatInfo.AMDesignator System.Globalization.DateTimeFormatInfo.PMDesignator 属性中定义的内容。如果正在格式化的时间中的小时数小于 12,则使用 A.M. 指示符;否则使用 P.M. 指示符。

yy

2位的年份

{0:yy}

02

将年份表示为两位数字。如果年份多于两位数,则结果中仅显示两位低位数。如果年份少于两位数,则用前导零填充该数字使之达到两位数。

yyyy

4位的年份

{0:yyyy}

2002

将年份表示为四位数字。如果年份多于四位数,则结果中仅显示四位低位数。如果年份少于四位数,则用前导零填充该数字使之达到四位数。

请注意,对于年份可以为五位数的泰国佛历,此格式说明符将呈现全部五位数。

zz

表示系统时间距格林威治时间 (GMT) 以小时为单位测量的带符号时区偏移量。2位数。

{0:zz}

-05

例如,位于太平洋标准时区中的计算机的偏移量为“-08”。

偏移量始终显示为带有前导符号。加号 (+) 指示小时数早于 GMT,减号 (-) 指示小时数迟于 GMT。偏移量范围为 –12 +13。一位数字的偏移量设置为带前导零的格式。偏移量受夏时制影响。

zzz

表示系统时间距格林威治时间 (GMT) 以小时和分钟为单位测量的带符号时区偏移量。

{0:zzz}

-05:00

例如,位于太平洋标准时区中的计算机的偏移量为“-08:00”。

偏移量始终显示为带有前导符号。加号 (+) 指示小时数早于 GMT,减号 (-) 指示小时数迟于 GMT。偏移量范围为 –12 +13。一位数字的偏移量设置为带前导零的格式。偏移量受夏时制影响。

:

分隔符

{0:hh:mm:ss}

10:43:20

当前 System.Globalization.DateTimeFormatInfo.TimeSeparator 属性中定义的时间分隔符,用于区分小时、分钟和秒。

/

分隔符

{0:dd/MM/yyyy}

10/12/2002

当前 System.Globalization.DateTimeFormatInfo.DateSeparator 属性中定义的日期分隔符,用于区分年、月和日。

常规使用自定义日期格式化的场景有以下几种方式:

 Vb.Net
Dim dtime As DateTime=DateTime.Now
'第一种,基于DateTime的ToString方法
Proj.MsgDebug.Add(dtime.ToString("yyyyMMdd HH:mm:ss:ffff")) '返回结果:20220706 08:08:43:9103
'第二种,基于String.Format
Proj.MsgDebug.Add(String.Format("{0:yyyyMMdd HH:mm:ss:ffff}",dtime)) '返回结果:20220706 08:08:43:9103

 C#
DateTime dtime = DateTime.Now;
// 第一种,基于DateTime的ToString方法
Proj.MsgDebug.Add(dtime.ToString("yyyyMMdd HH:mm:ss:ffff")); // 返回结果:20220706 08:08:43:9103
// 第二种,基于String.Format
Proj.MsgDebug.Add(string.Format("{0:yyyyMMdd HH:mm:ss:ffff}", dtime)); // 返回结果:20220706 08:08:43:9103

注意,在DateTime.ToString()方法中,传入的自定义格式化文本就仅包含格式化文本本身,而String.Format的格式化文本需要多一个“{0:格式化文本}”。

如果我们想要把“20220706132536”这样的字符串转换成相应的日期格式,该如何处理呢?

 Vb.Net
Dim dateString As String="20220706132536"
Dim dt As DateTime=DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture)
Proj.MsgDebug.Add(dt)  '转换结果:2022-07-06 13:25:36

 C#
string dateString = "20220706132536";
DateTime dt = DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
Proj.MsgDebug.Add(dt);  // 转换结果:2022-07-06 13:25:36