有需求或技術問題可以隨時跟我連絡 (MSN上線時)

2009年9月15日 星期二

常用時間(DateTime)字串格式整理

時間字串的格式化輸出是經常會用到的,尤其是程式會是系統的Log檔,為了明確的紀錄時間或是讓分析Log的工作更簡單,格式化的輸出尤其重要,一般來說都會使用String.Format來達到格式化的目的.看以下範例...

(1)自訂時間格式

specifiers
y 年
M 月
d 日
h 12小時制
H 24小時制
m 分
s 秒
f 毫秒
F 毫秒(不補0)
t 上午/下午
z 時區

DateTime myDT = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", myDT);   輸出=> "8 08 008 2008" 年份
String.Format("{0:M MM MMM MMMM}", myDT);  輸出=> "3 03 Mar March"月份
String.Format("{0:d dd ddd dddd}", myDT);  輸出=> "9 09 Sun Sunday" 日期
String.Format("{0:h hh H HH}",     myDT);  輸出=> "4 04 16 16"  時制 12/24
String.Format("{0:m mm}",          myDT);  輸出=> "5 05" 分
String.Format("{0:s ss}",          myDT);  輸出=> "7 07" 秒
String.Format("{0:f ff fff ffff}", myDT);  輸出=> "1 12 123 1230" 毫秒
String.Format("{0:F FF FFF FFFF}", myDT);  輸出=> "1 12 123 123" 毫秒(不補0)
String.Format("{0:t tt}",          myDT);  輸出=> "P PM"  上/下午
String.Format("{0:z zz zzz}",      myDT);  輸出=>  "-6 -06 -06:00"   時區

 

(2)標準時間格式(Framework提供)

Specifier     DateTimeFormatInfo         property Pattern value 
t                   ShortTimePattern              h:mm tt
d                  ShortDatePattern               M/d/yyyy
T                  LongTimePattern               h:mm:ss tt
D                 LongDatePattern                 dddd, MMMM dd, yyyy
f                  (combination of D and t)     dddd, MMMM dd, yyyy h:mm tt
F                 FullDateTimePattern            dddd, MMMM dd, yyyy h:mm:ss tt
g                 (combination of d and t)      M/d/yyyy h:mm tt
G                (combination of d and T)      M/d/yyyy h:mm:ss tt
m, M            MonthDayPattern                MMMM dd
y, Y             YearMonthPattern                MMMM, yyyy
r, R             RFC1123Pattern                   ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
s                 SortableDateTi­mePattern     yyyy'-'MM'-'dd'T'HH':'mm':'ss
u                 UniversalSorta­ble                yyyy'-'MM'-'dd HH':'mm':'ss'Z'
                   DateTimePat­tern

String.Format("{0:t}", myDT);  輸出=>   "4:05 PM"                        
String.Format("{0:d}", myDT);  輸出=>   "3/9/2008"                       
String.Format("{0:T}", myDT);  輸出=>   "4:05:07 PM"                    
String.Format("{0:D}", myDT);  輸出=>   "Sunday, March 09, 2008"         
String.Format("{0:f}", myDT);  輸出=>   "Sunday, March 09, 2008 4:05 PM" 
String.Format("{0:F}", myDT);  輸出=>   "Sunday, March 09, 2008 4:05:07 PM"
String.Format("{0:g}", myDT);  輸出=>   "3/9/2008 4:05 PM"        
String.Format("{0:G}", myDT);  輸出=>   "3/9/2008 4:05:07 PM"           
String.Format("{0:m}", myDT);  輸出=>   "March 09"                      
String.Format("{0:y}", myDT);  輸出=>   "March, 2008"                   
String.Format("{0:r}", myDT);  輸出=>   "Sun, 09 Mar 2008 16:05:07 GMT" 
String.Format("{0:s}", myDT);  輸出=>   "2008-03-09T16:05:07"          
String.Format("{0:u}", myDT);  輸出=>   "2008-03-09 16:05:07Z"