1. 程式人生 > >C# WinForm中DateTimePicker控制元件的Text屬性和Value屬性

C# WinForm中DateTimePicker控制元件的Text屬性和Value屬性

在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。

ddd:代表周幾,顯示是這樣的

dddd:這個代表的是星期幾,顯示式這個樣子的

(微軟考慮的真周到啊。。。。。)

這裡要說一下超過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這個屬性設定想要的格式。

控制元件顯示:     使用Text屬性獲得的:

2.使用Value屬性。它是獲取或設定分配給控制元件的日期/時間值。這個值與設定的CustomForma屬性的值沒有任何關係,無論你設定什麼格式,他獲取的值就是一個固定格式。這個格式與你電腦設定的日期時間格式相同。
控制元件顯示:      使用Value屬性獲得的:

但是好處是這裡在Value後的ToString()方法可以傳遞表達格式的字串做引數。

比如:dateTimePicker1.Value.ToString("yyyy-MM-dd"),這個格式引數的字元的含義和上邊的是一致的。