欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#日期格式化的几个要点小结

程序员文章站 2023-12-21 09:17:58
日期格式化 标准 datetime 格式字符串 如果格式字符串只包含下表列出的某个单个格式说明符,则它们被解释为标准格式说明符。如果指定的格式字符是单个字符并且不包含在...

日期格式化

标准 datetime 格式字符串

如果格式字符串只包含下表列出的某个单个格式说明符,则它们被解释为标准格式说明符。如果指定的格式字符是单个字符并且不包含在下表中,则引发异常。如果格式字符串在长度上比单个字符长(即使多余的字符是空白),则格式字符串被解释为自定义格式字符串。请注意,这些格式说明符产生的模式受“区域选项”控制面板中的设置的影响。具有不同区域性或不同日期与时间设置的计算机将显示不同的模式。

格式字符串显示的时间和日期分隔符由与当前区域性的 datetimeformat 属性关联的 dateseparator 和 timeseparator 字符定义。然而,如果 invariantculture 被“r”、“s”和“u”说明符引用,与 dateseparator 和 timeseparator 字符关联的字符不随当前区域性更改。下表描述了格式化 datetime 对象的标准格式字符串。

d 短日期模式 显示由与当前线程关联的 datetimeformatinfo.shortdatepattern 属性定义的模式或者由指定格式提供程序定义的模式。

d 长日期模式 显示由与当前线程关联的 datetimeformatinfo.longdatepattern 属性定义的模式或者由指定格式提供程序定义的模式。

t 短时间模式 显示由与当前线程关联的 datetimeformatinfo.shorttimepattern 属性定义的模式或者由指定格式提供程序定义的模式。

t 长时间模式 显示由与当前线程关联的 datetimeformatinfo.longtimepattern 属性定义的模式或者由指定格式提供程序定义的模式。

f 完整日期/时间模式(短时间) 显示长日期和短时间模式的组合,由空格分隔。

f 完整日期/时间模式(长时间) 显示由与当前线程关联的 datetimeformatinfo.fulldatetimepattern 属性定义的模式或者由指定格式提供程序定义的模式。

g 常规日期/时间模式(短时间) 显示短日期和短时间模式的组合,由空格分隔。

g 常规日期/时间模式(长时间) 显示短日期和长时间模式的组合,由空格分隔。

m 或 m 月日模式 显示由与当前线程关联的 datetimeformatinfo.monthdaypattern 属性定义的模式或者由指定格式提供程序定义的模式。

r 或 r rfc1123 模式 显示由与当前线程关联的 datetimeformatinfo.rfc1123pattern 属性定义的模式或者由指定格式提供程序定义的模式。这是定义的标准,并且属性是只读的;因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。属性引用 cultureinfo.invariantculture 属性并遵照自定义模式“ddd, dd mmmm yyyy hh:mm:ss g\mt”。请注意,“gmt”中的“m”需要转义符,因此它不被解释。

s 可排序的日期/时间模式;符合 iso 8601 显示由与当前线程关联的 datetimeformatinfo.sortabledatetimepattern 属性定义的模式或者由指定格式提供程序定义的模式。属性引用 cultureinfo.invariantculture 属性,格式遵照自定义模式“yyyy-mm-ddthh:mm:ss”。

u 通用的可排序日期/时间模式 显示由与当前线程关联的 datetimeformatinfo.universalsortabledatetimepattern 属性定义的模式或者由指定格式提供程序定义的模式。因为它是定义的标准,并且属性是只读的,因此无论区域性或格式提供程序是什么,模式总是相同的。格式遵照自定义模式“yyyy-mm-dd hh:mm:ssz”。

u 通用的可排序日期/时间模式 显示由与当前线程关联的 datetimeformatinfo.fulldatetimepattern 属性定义的模式或者由指定格式提供程序定义的模式。请注意,显示的时间是通用时间,而不是本地时间。

y 或y 年月模式 显示由与当前线程关联的datetimeformatinfo.yearmonthpattern 属性定义的模式或者由指定格式提供程序定义的模式

下表显示了格式说明符示例的列表,这些示例应用于公开当前日期和时间信息的 datetime.now 的任意值。示例中给出了不同的区域性设置以阐释更改当前区域性的影响。这通常以下面几种方式更改:使用 microsoft windows 中的“日期/时间”控制面板,将您自己的 datetimeformatinfo 对象作为格式提供程序传递,或将 cultureinfo 对象设置传递给不同的区域性。请注意,对于“r”和“s”格式,更改区域性不影响输出。此表是说明标准日期和时间说明符如何影响格式化的快速指南。请参阅该表下面阐释这些说明符的代码示例部分。

格式说明符 当前区域性 输出

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-us2001-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-usapril 10
mms-my 10 april
yen-us april, 2001
yaf-zaapril 2001
l en-uz 无法识别的格式说明符;引发格式异常。

日期转化二

复制代码 代码如下:

datetime dt = datetime.now;
label1.text = dt.tostring();//2005-11-5 13:21:25
label2.text = dt.tofiletime().tostring();//127756416859912816
label3.text = dt.tofiletimeutc().tostring();//127756704859912816
label4.text = dt.tolocaltime().tostring();//2005-11-5 21:21:25
label5.text = dt.tolongdatestring().tostring();//2005年11月5日
label6.text = dt.tolongtimestring().tostring();//13:21:25
label7.text = dt.tooadate().tostring();//38661.5565508218
label8.text = dt.toshortdatestring().tostring();//2005-11-5
label9.text = dt.toshorttimestring().tostring();//13:21
label10.text = dt.touniversaltime().tostring();//2005-11-5 5:21:25

label1.text = dt.year.tostring();//2005
label2.text = dt.date.tostring();//2005-11-5 0:00:00
label3.text = dt.dayofweek.tostring();//saturday
label4.text = dt.dayofyear.tostring();//309
label5.text = dt.hour.tostring();//13
label6.text = dt.millisecond.tostring();//441
label7.text = dt.minute.tostring();//30
label8.text = dt.month.tostring();//11
label9.text = dt.second.tostring();//28
label10.text = dt.ticks.tostring();//632667942284412864
label11.text = dt.timeofday.tostring();//13:30:28.4412864

label1.text = dt.tostring();//2005-11-5 13:47:04
label2.text = dt.addyears(1).tostring();//2006-11-5 13:47:04
label3.text = dt.adddays(1.1).tostring();//2005-11-6 16:11:04
label4.text = dt.addhours(1.1).tostring();//2005-11-5 14:53:04
label5.text = dt.addmilliseconds(1.1).tostring();//2005-11-5 13:47:04
label6.text = dt.addmonths(1).tostring();//2005-12-5 13:47:04
label7.text = dt.addseconds(1.1).tostring();//2005-11-5 13:47:05
label8.text = dt.addminutes(1.1).tostring();//2005-11-5 13:48:10
label9.text = dt.addticks(1000).tostring();//2005-11-5 13:47:04
label10.text = dt.compareto(dt).tostring();//0
label11.text = dt.add(?).tostring();//问号为一个时间段

label1.text = dt.equals("2005-11-6 16:11:04").tostring();//false
label2.text = dt.equals(dt).tostring();//true
label3.text = dt.gethashcode().tostring();//1474088234
label4.text = dt.gettype().tostring();//system.datetime
label5.text = dt.gettypecode().tostring();//datetime

label1.text = dt.getdatetimeformats('s')[0].tostring();//2005-11-05t14:06:25
label2.text = dt.getdatetimeformats('t')[0].tostring();//14:06
label3.text = dt.getdatetimeformats('y')[0].tostring();//2005年11月
label4.text = dt.getdatetimeformats('d')[0].tostring();//2005年11月5日
label5.text = dt.getdatetimeformats('d')[1].tostring();//2005 11 05
label6.text = dt.getdatetimeformats('d')[2].tostring();//星期六 2005 11 05
label7.text = dt.getdatetimeformats('d')[3].tostring();//星期六 2005年11月5日
label8.text = dt.getdatetimeformats('m')[0].tostring();//11月5日
label9.text = dt.getdatetimeformats('f')[0].tostring();//2005年11月5日 14:06
label10.text = dt.getdatetimeformats('g')[0].tostring();//2005-11-5 14:06
label11.text = dt.getdatetimeformats('r')[0].tostring();//sat, 05 nov 2005 14:06:25 gmt

label1.text = string.format("{0:d}",dt);//2005-11-5
label2.text = string.format("{0:d}",dt);//2005年11月5日
label3.text = string.format("{0:f}",dt);//2005年11月5日 14:23
label4.text = string.format("{0:f}",dt);//2005年11月5日 14:23:23
label5.text = string.format("{0:g}",dt);//2005-11-5 14:23
label6.text = string.format("{0:g}",dt);//2005-11-5 14:23:23
label7.text = string.format("{0:m}",dt);//11月5日
label8.text = string.format("{0:r}",dt);//sat, 05 nov 2005 14:23:23 gmt
label9.text = string.format("{0:s}",dt);//2005-11-05t14:23:23
label10.text   string.format("{0:t}",dt);//14:23
label11.text = string.format("{0:t}",dt);//14:23:23
label12.text = string.format("{0:u}",dt);//2005-11-05 14:23:23z
label13.text = string.format("{0:u}",dt);//2005年11月5日 6:23:23
label14.text = string.format("{0:y}",dt);//2005年11月
label15.text = string.format("{0}",dt);//2005-11-5 14:23:23
label16.text = string.format("{0:yyyymmddhhmmssffff}",dt); 

上一篇:

下一篇: