2008/02/25

C# DateTime 日期格式轉換

C#有個DateTime的物件用來處理日期的其中DateTime.ParseExact 方法(System)方法可以將日期和時間的指定字串表示轉換為其對等的DateTime
字串表示的格式必須完全符合指定的格式。
再搭配DateTime.ToString (IFormatProvider)
方法使用格式資訊,將這個執行個體的值轉換為它的對等字串表示。


// 將字串日期轉整數
// 日期字串
// 整數日期格式
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;
    }
}

沒有留言: