2014年1月26日 星期日

C#   DateTime.ToString()用法詳解
獲得計算機內已經安裝的區域選項所有列表
CultureInfo.GetCultures(CultureTypes.InstalledWin32Cultures)
獲得當前區域選項
CultureInfo.CurrentCulture
常用區域選項
CultureInfo[] cultures = { new CultureInfo( "en-US" ), new CultureInfo( "fr-FR" ), newCultureInfo( "it-IT" ) ,  new CultureInfo( "de-DE" )   ,  new CultureInfo( " zh-CN" )  };
我們經常會遇到對時間進行轉換,達到不同的顯示效果,默認格式為:2006-6-6 14:33:34 
如果要換成成200606,06-2006,2006-6-6或更多的格式該怎麼辦呢?
這裡將要用到:DateTime.ToString的方法(String, IFormatProvider)
示例:
using System;
using System.Globalization;
String format="D";
DateTime date=DataTime.Now;
Response.Write(date.ToString(format, DateTimeFormatInfo.InvariantInfo));
結果輸出
Thursday, June 16, 2006

在這裡列出了參數format格式詳細用法
=======================
格式字符關聯屬性/說明 
d ShortDatePattern 
D LongDatePattern 
f 完整日期和時間(長日期和短時間) 
F FullDateTimePattern(長日期和長時間) 
g 常規(短日期和短時間) 
G 常規(短日期和長時間) 
m、M MonthDayPattern 
r、R RFC1123Pattern 
s 使用當地時間的SortableDateTimePattern(基於ISO 8601) 
t ShortTimePattern 
T LongTimePattern 
u UniversalSortableDateTim ePattern用於顯示通用時間的格式 
U 使用通用時間的完整日期和時間(長日期和長時間) 
y、Y YearMonthPattern
下表列出了可被合併以構造自定義模式的模式
========================================
這些模式是區分大小寫的;例如,識別“MM”,但不識別“mm”。如果自定義模式包含空白字符或用單引號括起來的字符,則輸出字符串頁也將包含這些字符。未定義為格式模式的一部分或未定義為格式字符的字符按其原義復制。
格式模式說明:
d 月中的某一天。一位數的日期沒有前導零。 
dd 月中的某一天。一位數的日期有一個前導零。 
ddd 周中某天的縮寫名稱,在AbbreviatedDayNames 中定義。 
dddd 周中某天的完整名稱,在DayNames 中定義。 
M 月份數字。一位數的月份沒有前導零。 
MM 月份數字。一位數的月份有一個前導零。 
MMM 月份的縮寫名稱,在AbbreviatedMonthNames 中定義。 
MMMM 月份的完整名稱,在MonthNames 中定義。 
y 不包含紀元的年份。如果不包含紀元的年份小於10,則顯示不具有前導零的年份。 
yy 不包含紀元的年份。如果不包含紀元的年份小於10,則顯示具有前導零的年份。 
yyyy 包括紀元的四位數的年份。 
gg 時期或紀元。如果要設置格式的日期不具有關聯的時期或紀元字符串,則忽略該模式。 
h 12 小時制的小時。一位數的小時數沒有前導零。 
hh 12 小時制的小時。一位數的小時數有前導零。 
H 24 小時制的小時。一位數的小時數沒有前導零。 
HH 24 小時制的小時。一位數的小時數有前導零。 
m 分鐘。一位數的分鐘數沒有前導零。 
mm 分鐘。一位數的分鐘數有一個前導零。 
s 秒。一位數的秒數沒有前導零。 
ss 秒。一位數的秒數有一個前導零。 
f 秒的小數精度為一位。其餘數字被截斷。 
ff 秒的小數精度為兩位。其餘數字被截斷。 
fff 秒的小數精度為三位。其餘數字被截斷。 
ffff 秒的小數精度為四位。其餘數字被截斷。 
fffff 秒的小數精度為五位。其餘數字被截斷。 
ffffff 秒的小數精度為六位。其餘數字被截斷。 
fffffff 秒的小數精度為七位。其餘數字被截斷。 
t 在AMDesignator 或PMDesignator 中定義的AM/PM 指示項的第一個字符(如果存在)。 
tt 在AMDesignator 或PMDesignator 中定義的AM/PM 指示項(如果存在)。 
z 時區偏移量(“+”或“-”後面僅跟小時)。一位數的小時數沒有前導零。例如,太平洋標準時間是“-8”。 
zz 時區偏移量(“+”或“-”後面僅跟小時)。一位數的小時數有前導零。例如,太平洋標準時間是“-08”。 
zzz 完整時區偏移量(“+”或“-”後面跟有小時和分鐘)。一位數的小時數和分鐘數有前導零。例如,太平洋標準時間是“-08:00”。 
: 在TimeSeparator 中定義的默認時間分隔符。 
/ 在DateSeparator 中定義的默認日期分隔符。 
% c 其中c 是格式模式(如果單獨使用)。如果格式模式與原義字符或其他格式模式合併,則可以省略“%”字符。
/ c 其中c 是任意字符。照原義顯示字符。若要顯示反斜杠字符,請使用“//”。
只有上面第二個表中列出的格式模式才能用於創建自定義模式;在第一個表中列出的標準格式字符不能用於創建自定義模式。自定義模式的長度至少為兩個字符;例如,
DateTime.ToString( "d") 返回DateTime 值;“d”是標準短日期模式。 
DateTime.ToString( "%d") 返回月中的某天;“%d”是自定義模式。 
DateTime.ToString( "d ") 返回後面跟有一個空白字符的月中的某天;“d”是自定義模式。
比較方便的是,上面的參數可以隨意組合,並且不會出錯,多試試,肯定會找到你要的時間格式
如要得到2005年06月這樣格式的時間
可以這樣寫:
date.ToString("yyyy年MM月", DateTimeFormatInfo.InvariantInfo)
如此類推.

下面列出一些Asp.net中具體的日期格式化用法:
============================================
1.綁定時格式化日期方法: 

2.數據控件如DataGrid/DataList等的件格式化日期方法: 
e.Item.Cell[0].Text = Convert.ToDateTime(e.Item.Cell[0].Text).ToShortDateString();
3.用String類轉換日期顯示格式: 
String.Format( "yyyy-MM-dd ",yourDateTime);
4.用Convert方法轉換日期顯示格式: 
Convert.ToDateTime("2005-8-23").ToString
("yyMMdd",System.Globalization.DateTimeFormatInfo.InvariantInfo); //支持繁體數據庫
5.直接用ToString方法轉換日期顯示格式: 
DateTime.Now.ToString("yyyyMMddhhmmss"); 
DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")
6.只顯示年月 
DataBinder.eval_r(Container.DataItem,"starttime","{0:yyyy-M}")
7.顯示時間所有部分,包括:年月日時分秒 
DataFormatString='{0:yyyy-MM-dd HH24:mm:ss}'> 

用DateTime.ToString(string format)輸出不同格式的日期 
DateTime.ToString()函數有四個重載。一般用得多的就是不帶參數的那個了。殊不知,DateTime.ToString(string format)功能更強大,能輸出不同格式的日期。以下把一些情況羅列出來,供大家參考。有些在MSDN上有的就沒有列出來了。
1.   y代表年份,注意是小寫的y,大寫的Y並不代表年份。      
2.   M表示月份。      
3.   d表示日期,注意D並不代表什麼。      
4.   h或H表示小時,h用的是12小時制,H用的是24小時制。      
5.   m表示分鐘。      
6.   s表示秒。注意S並不代表什麼。      
格式
輸出
示例
y
7
string yy = DateTime.Now.ToString("y-MM")
yy="7-05"
yy
07
string yy = DateTime.Now.ToString("yy-MM")
yy="07-05"
yyy或更多的y
1984
string yy = DateTime.Now.ToString("yyyy");
yy="2007"
M
5.
string mon = DateTime.Parse("1984-05-09")ToString("yyyy-M")
mon = "1984-5"
MM
05.
string mon = DateTime.Parse("1984-05-09")ToString("MM")
mon = "05"
MMM
如果是中文版的操作系統,則會輸出:五月.
如果是英文操作系統,則輸入月份前三個字母的簡寫:May
string mon = DateTime.Parse("2006-07-01").ToString("MMM")
英文版操作系統:Jul
中文版操作系統:七月
MMMM或更多的M
如果是中文版的操作系統,則會輸出:五月.
如果是英文操作系統,則輸入月份的全寫
string mon = DateTime.Parse("2006-07-01").ToString("MMM")
英文版操作系統:July
中文版操作系統:七月
日期或星期
d
9
string dd= DateTime.Parse("1984-05-09")ToString("d")
dd= "9"
dd
09
string dd= DateTime.Parse("1984-05-09")ToString("dd")
dd= "09"
ddd
如果是中文版的操作系統,則會輸出星期,如星期三。.
如果是英文操作系統,則輸出星期的簡寫:如
Wed
string dd = DateTime.Parse("2006-07-01").ToString("ddd")
英文版操作系統:Wed
中文版操作系統:星期三
dddd或更多的d
如果是中文版的操作系統,則會輸出星期,如星期三。.
如果是英文操作系統,則輸出星期:如
Wednesday
string dd = DateTime.Parse("2006-07-01").ToString("dddd")
英文版操作系統:Wednesday
中文版操作系統:星期三
小時
h
小時範圍:1-12
string hh = DateTime.Now.ToString(“h”);
hh = 8
hh或更多的h
小時範圍:1-12
string hh = DateTime.Now.ToString(“hh”);
hh = 08
H
小時範圍:0-23
string hh = DateTime.Now.ToString(“yyyy-H”);
hh = 2006-8
HH或更多的H
小時範圍:0-23
string hh = DateTime.Now.ToString(“yyyy-HH”);
hh = 2006-08
string hh = DateTime.Pare(“2006-7-4 18:00:00”).ToString(“yyyy-HH”);
hh = 2006-18
分鐘
m
6
string mm = DateTime.Now.ToString("yyyy-MM-dd-m");
mm = “2006-07-01-6”;
mm或更多的m
06
string mm = DateTime.Now.ToString("yyyy-MM-dd-mm");
mm = “2006-07-01-06”;
s
6
string mm = DateTime.Now.ToString("yyyy-MM-dd-s");
mm =

沒有留言: