当前位置: 移动技术网 > IT编程>开发语言>c# > C#日期格式化的几个要点小结

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

日期格式化

标准 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); 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网