C#中好用的日期格式轉換

  • 24507
  • 0
  • C#
  • 2008-04-25

VB有個功能Format可以將日期轉換為特定格式,相信很多人都覺得很好用吧!
最近在寫C#的也有類似的功能,有別於java要自己判斷格式

VB有個功能Format可以將日期轉換為特定格式,相信很多人都覺得很好用吧!
最近在寫C#的也有類似的功能,有別於java要自己判斷格式
C#有個DateTime的物件用來處理日期的
其中DateTime.ParseExact 方法(System) 方法可以將日期和時間的指定字串表示轉換為其對等的 DateTime。字串表示的格式必須完全符合指定的格式。
再搭配DateTime.ToString (IFormatProvider) 方法使用格式資訊,將這個執行個體的值轉換為它的對等字串表示。
以下是我寫的一個範例:


#region 轉換整數方法
/// 將字串日期轉整數
/// 日期字串
/// 整數日期格式
private static int ParseDate(string _date) 
{ 
    //這裡定義所有日期格式 
    string[] dateFormats = ...{ "yyyy/MM/dd", "yyy/MM/dd", "yy/MM/dd", "y/MM/dd", 
           "yyyy-MM-dd", "yyy-MM-dd", "yy-MM-dd", "y-MM-dd", 
           "yyyy/M/dd","yyy/M/dd","yy/M/dd","y/M/dd", 
           "yyyy-M-dd","yyy-M-dd","yy-M-dd","y-M-dd", 
           "yyyy/MM/d","yyy/MM/d","yy/MM/d","y/MM/d", 
           "yyyy-MM-d","yyy-MM-d","yy-MM-d","y-MM-d", 
           "yyyy/M/d","yyy/M/d","yy/M/d","y/M/d", 
           "yyyy-M-d","yyy-M-d","yy-M-d","y-M-d"}; 
    try 
    { 
		//這裡來處理傳入的格式是否為日期格式,只需要簡單一行 
		DateTime datetime = DateTime.ParseExact(_date, dateFormats, null, DateTimeStyles.AllowWhiteSpaces); 
		int iToken = _date.IndexOf("-", 0); 
		if (iToken == -1) 
		iToken = _date.IndexOf("/",0); 
		string iYear = _date.Substring(0, iToken); 
		switch (iYear.Length)
		{
		    ///這裡是利用datetime.ToString(IFormatProvider)的方法傳出自己想要的統一格式 
		    case 1: 
		    return Int32.Parse(datetime.ToString("yMMdd")); 
		    case 2: 
		    return Int32.Parse(datetime.ToString("yyMMdd")); 
		    case 3: 
		    return Int32.Parse(datetime.ToString("yyyMMdd")); 
		    case 4: 
		    return Int32.Parse(datetime.ToString("yyyyMMdd")); 
		} 
		return 0; 
    }catch (Exception)...{ 
		return 0; 
    } 
 } 
/// 將字串時間轉換為整數時間
/// 時間字串(HH:mm:ss
/// HHmmss整數格式 
 private static int ParseTime(string _time) 
{ 
    string[] timeFormats = ...{ "HH:mm:ss", "HH:mm:s","HH:m:ss", "HH:m:s", 
           "H:mm:ss","H:mm:s","H:m:ss","H:m:s"}; 
    try 
    { 
		DateTime datetime = DateTime.ParseExact(_time, timeFormats, null, DateTimeStyles.AllowWhiteSpaces); 
		return Int32.Parse(datetime.ToString("HHmmss")); 
    }catch(Exception)...{ 
		return 0; 
    } 
}
#endregion

以上範例若有新的格式是要變更dateFormats與timeFormats的陣列就可以多一種格式轉換了 
方便吧~~