日期型資料,在 c# 中的參與運算的時候,應該也是轉換為長整型資料來運算的。它
的長整型值是自 0001 年 1 月 1 日午夜 12:00 以來所經過時間以 100 毫微秒為間隔表示時
的數字。這個數在 c# 的 datetime 中被稱為 ticks(刻度)。datetime 類型有一個名為
ticks 的長整型隻讀屬性,就儲存着這個值。如此,要從一個 datatime 型資料得到 long
型值就非常簡單了,隻需要讀出 datatime 對象的 ticks 值即可,如:
long longdate = datetime.now.ticks;
datetime 的構造函數中也提供了相應的,從長整型資料構造 datetime 型資料的函
數:datetime(long)。如:
datetime thedate = new datetime(longdate);
格式化日期型資料
程式設計的過程中,通常需要将日期型資料按照一定的格式輸出,當然,輸出結果肯定是
字元串。為此,我們需要使用 system.datetime 類的 tostring() 方法,并為其指定格式字
符串。
msdn 中,system.globalization.datetimeformatinfo 類的概述裡對模式字元串有非
常詳細的說明,是以,這裡我隻對常用的一些格式進行說明,首先請看下表:
d 月中的某一天一位數的日期沒有前導零
dd 月中的某一天一位數的日期有一個前導零
ddd 周中某天的縮寫名稱在 abbreviateddaynames 中定義
dddd 周中某天的完整名稱在 daynames 中定義
m 月份數字一位數的月份沒有前導零
mm 月份數字一位數的月份有一個前導零
mmm 月份的縮寫名稱在 abbreviatedmonthnames 中定義
mmmm 月份的完整名稱在 monthnames 中定義
y 不包含紀元的年份如果不包含紀元的年份小于 10,則顯示不具有前導零的年份
yy 不包含紀元的年份如果不包含紀元的年份小于 10,則顯示具有前導零的年份
yyyy 包括紀元的四位數的年份
h 12 小時制的小時一位數的小時數沒有前導零
hh 12 小時制的小時一位數的小時數有前導零
h 24 小時制的小時一位數的小時數沒有前導零
hh 24 小時制的小時一位數的小時數有前導零
m 分鐘一位數的分鐘數沒有前導零
mm 分鐘一位數的分鐘數有一個前導零
s 秒一位數的秒數沒有前導零
ss 秒一位數的秒數有一個前導零
為了便于大家的了解,不妨試試下面的程式:
private void testdatetimetostring()
{ datetime now = datetime.now;
string format;
this.textbox1.text = "";
format = "yyyy-mm-dd hh:mm:ss";
this.textbox1.appendtext(format + ": " +now.tostring(format) + "\n");
format = "yy 年m 日d 日";
this.textbox1.appendtext(format + ": " + now.tostring(format) +"\n");
}
這段程式将輸出結果:
yyyy-mm-dd hh:mm:ss: 2002-08-26 17:03:04
yy 年m 日d 日: 02 年8 日26 日
這時候,又出現一個問題,如果要輸出的文本資訊中包含格式字元怎麼辦?如
format = "year: yyyy, month: mm, day: dd";
this.textbox1.appendtext(now.tostring(format) + "\n");
将輸出:
2ear: 2002, 4on 下5: 08, 26a2: 26
這并不是我想要的結果,怎麼辦呢?有辦法——
format = "\"year\": yyyy, \'month\': mm, \'day\': dd";
看,這次運作結果對了:
year: 2002, month: 08, day: 26
可以看出,隻需要使用單引号或者雙引号将文本資訊括起來就好。