天天看點

日期型資料知識

日期型資料,在 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

可以看出,隻需要使用單引号或者雙引号将文本資訊括起來就好。