2013年9月17日 星期二

[轉貼] 日期函數的應用、ToString格式大全


//今天
DateTime.Now.Date.ToString();
//昨天
DateTime.Now.AddDays(-1).ToString();
//明天
DateTime.Now.AddDays(1).ToString();

//本週第1天及最後1天 (要注意的是這裡的每一週是從週日始至週六止)
DateTime.Today.AddDays (-(int)DateTime.Today.DayOfWeek).ToString();
DateTime.Today.AddDays (6 -(int)DateTime.Today.DayOfWeek).ToString();

//上週, 一個周是7天,上週就是本週再減去7天
DateTime.Today.AddDays (-(int)DateTime.Today.DayOfWeek - 7).ToString();
DateTime.Today.AddDays (6 -(int)DateTime.Today.DayOfWeek - 7).ToString();

//下周
DateTime.Today.AddDays (-(int)DateTime.Today.DayOfWeek + 7).ToString();
DateTime.Today.AddDays (6 -(int)DateTime.Today.DayOfWeek + 7).ToString();


//巧用C#裡ToString的字符格式化
//本用第1天及最後1天
DateTime.Now.ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToString();

//上個月第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToString();
//下個月第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToString();

//今年第1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToString();
//今年最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToString();

//去年第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToString();

//明年第1天及最後1天
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToString();
DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToString();

//本季,一年四個季度,一個季度三個月
//先把日期推到本季度第一個月,然後這個月的第一天就是本季度的第一天了
DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
//本季度的最後一天就是下季度的第一天減一
DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToString();
//下季
DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToString();
//上季
DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToString(); 
 
C


货币


2.5.ToString("C")


¥2.50


D


十进制数


25.ToString("D5")


00025


E


科学型


25000.ToString("E")


2.500000E+005


F


固定点


25.ToString("F2")


25.00


G


常规


2.5.ToString("G")


2.5


N


数字


2500000.ToString("N")


2,500,000.00


X


十六进制


255.ToString("X")


FF

格式符
 
 
 
C
数字类型
专用场合的货币值
$4834.50 (USA)
£4834.50 (UK)
D
只用于整数类型
一般的整数
4834
E
数字类型
科学计数法
4.834E+003
F
数字类型
小数点后的位数固定
4384.50
G
数字类型
一般的数字
4384.5
N
数字类型
通常是专用场合的数字 格式
4,384.50 (UK/USA)
4 384,50 (欧洲大陆)
P
数字类型
百分比计数法
432,000.00%
X
只用于整数类型
16进制格式
1120 (如果要显示0x1120,需要写上0x)

Some Useful Examples

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);
This will output "$1,240.00" if passed 1243.50. It will output the same format but in parentheses if the number is negative, and will output the string "Zero" if the number is zero.
String.Format("{0:(###) ###-####}", 8005551212);
This will output "(800) 555-1212".

变量.ToString()
字符型转换 转为字符串  12345.ToString("n"); //生成 12,345.00  12345.ToString("C"); //生成 ¥12,345.00  12345.ToString("e"); //生成 1.234500e+004  12345.ToString("f4"); //生成 12345.0000  12345.ToString("x"); //生成 3039 (16进制)  12345.ToString("p"); //生成 1,234,500.00%
formatCode 是可選的格式化代碼字符串。(詳細內容請搜索“格式化字符串”查看)
必須用“{”和“}”將格式與其他字符分開。如果恰好在格式中也要使用大括號,可以用連續的兩個大括號表示一個大括號,即: “{{”或者“}}”。
常用格式舉例:
(1) int i=12345;
this.textBox1.Text=i.ToString();
//結果 12345(this指當前對象,或叫當前類的實例)
this.textBox2.Text=i.ToString("d8");
//結果 00012345
(2) int i=123;
double j=123.45;
string s1=string.Format("the value is {0,7:d}",i);
string s2=string.Format("the value is {0,7:f3}",j);
this.textBox1.Text=s1 ;
//結果 the value is 123
this.textBox2.Text=s2;
//結果 the value is 123.450
(3)double i=12345.6789;
this.textBox1.Text=i.ToString("f2"); //結果 12345.68
this.textBox2.Text=i.ToString("f6");
//結果 12345.678900
(4)double i=12345.6789;
this.textBox1.Text=i.ToString("n"); //結果 12,345.68
this.textBox2.Text=i.ToString(“n4”); //結果 12,345.6789
(5)double i=0.126;
string s=string.Format("the value is {0:p}",i);
this.textBox1.Text=i.ToString("p"); //結果 12.6%
this.textBox2.Text=s; //結果 the value is 12.6%
(6) DateTime dt =new DateTime(2003,5,25);
this.textBox1.Text=dt.ToString("yy.M.d");
//結果 03.5.25
this.textBox2.Text=dt.ToString(“yyyy年M月”);
//結果 2003年5月
Convert.ToDateTime("2005/12/22 22:22:22").ToString("yyyy/MM/dd HH:mm:ss") "2005/12/22 22:22:22"
(7) int i=123;
double j=123.45;
string s=string.Format("i:{0,-7},j:{1,7}",i,j);
//-7表示左對齊,占7位
this.textBox1.Text=s ;
//結果i:123 ,j: 123.45 

 DateTime.ToString()用法詳解
我們經常會遇到對時間進行轉換,達到不同的顯示效果,默認格式為: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 UniversalSortableDateTimePattern 用於顯示通用時間的格式 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.綁定時格式化日期方法: <ASP:BOUNDCOLUMN DATAFIELD= "JoinTime " DATAFORMATSTRING= "{0:yyyy-MM-dd} " > <ITEMSTYLE WIDTH= "18% " > </ITEMSTYLE > </ASP:BOUNDCOLUMN >
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(Container.DataItem,"starttime","{0:yyyy-M}")
7.顯示時間所有部分,包括:年月日時分秒 <asp:BoundColumn DataField="收款時間" HeaderText="收款時間" DataFormatString="{0:yyyy-MM-dd HH24:mm:ss}"> </asp:BoundColumn>

沒有留言:

張貼留言