在WinForm中经常会用到DateTimePicker这个控件,用这个控件获取时间会使用到Text属性或者Value属性。
关于这两个属性,还是存在着一些的不同,在这里简单的测试和总结一下。
首先看一下默认状态下的DateTimePicker控件
就是由含年、月、日三个值拼成的一个字符串表示一个日期的值。
1.设置DateTimePicker控件显示的格式
这个控件有一个CustomFormat属性,这个属性可以用来控制控件值显示的日期格式。
在设置这个属性之前,需要将Format属性设置为Custom,表示使用自定义的格式。
CustomFormat的值有以下几种:
(1)不设置任何值:使用默认的显示格式,就是你电脑右下角时间的格式(不包含时分秒)
(2)使用自定义的值:这里的这个值是可以任意写的。。。。(不过瞎写没法获得时间)
比如:aaaaa
这里设置格式的方法可以说是匹配特定字符。 以下这些字符是具有特殊含义的字符:y、M、d、h、H、m、s(其他的暂时没有发现)。
y:代表年。
使用yyyy设置后会在控件中显示对应的年份。
(另外还可以y、yy、yyy这三种会有特殊的显示,不过我也没太弄明白显示的规律,都是由年份相关的值组成的一串字符,一般情况也没啥用)
M:代表月。
MM:代表由两个数字符号组成的月份 ,如1月显示 01,12月显示12。
M:也是代表月,但是这里小于10月均只显示1位,没有前置的0,其余的正常显示。例如:1月显示1,10显示10。
d:代表天或者星期几
dd:代表由两个数字符号组成的天 ,例如:1则显示 01,12显示12。
d: 一位数只显示一个值,没有前置的0,其余正常显示。1显示1,10显示10。
(微软考虑的真周到啊。。。。。)
这里要说一下超过4个以上的d,比如ddddddddddddd显示的依然是星期几,有没有上限不知道。那么如果要既显示日期有显示周几呢?很简单加上一个非d的字符放两个中间就行了。比如dd-dddd 显示的就是
h/H:都是代表小时,这里使用h是12时制,H是24小时制。(控件会对你输入的值作处理的,比如你使用了h,那么超过12的值会自动转换)
hh/HH:是两个字符组成小时,h/H是一个字符,和上边的M和d的规则是一样的。
m:代表分钟。m和mm的规则和区别和上边一致。
s:代表秒。s和ss的规则和区别也和上边一致。
目前发现的特殊字符就上边这些,使用这些字符的组合基本就可以完成所有日期的显示格式了,比如显示年月日时分秒 那么格式为:yyyy-MM-dd HH:mm:ss 对应显示的就是
2.获取控件设置日期的两个方法及其区别
一般来说获取控件的日期(值)有两种方法,一种是使用Text属性,另一种是使用Value属性。这两个属性都可以做到,但是他们还是有一定区别的,简单的说一下。
1.首先是Text属性,它是获取或设置与当前控件关联的文本。这个意思就是DateTimePicker上显示的是什么,你获取到的就是什么。比如你显示的是a,那么Text属性的值就是a。而且Text属性使用ToString()这个方法的时候是不能传递表达格式的字符串做参数。所以想获得想要的时间格式就需要使用CustomForma这个属性设置想要的格式。
2.使用Value属性。它是获取或设置分配给控件的日期/时间值。这个值与设置的CustomForma属性的值没有任何关系,无论你设置什么格式,他获取的值就是一个固定格式。这个格式与你电脑设置的日期时间格式相同。
控件显示: 使用Value属性获得的:
但是好处是这里在Value后的ToString()方法可以传递表达格式的字符串做参数。
比如:dateTimePicker1.Value.ToString("yyyy-MM-dd"),这个格式参数的字符的含义和上边的是一致的。