日期自定义格式化文本主要有以下几种
格式化文本 |
类型 |
示例 |
输出 |
说明 |
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 |
2位12小时制表达 |
{0:hh} |
10 |
将小时表示为从 01 至 12 的数字,即通过 12
小时制表示小时,自午夜或中午开始对整小时计数。因此,午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。小时数不进行舍入,一位数字的小时数设置为带前导零的格式。例如,给定时间为 5:43,则此格式说明符显示“05”。 |
HH |
2位24小时制表达 |
{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 |
|
C# |
string dateString = "20220706132536"; DateTime dt = DateTime.ParseExact(dateString, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture); Proj.MsgDebug.Add(dt); // 转换结果:2022-07-06 13:25:36 |