2014年1月6日 星期一

ASP.NET C# 字串處理 - 2(日期時間)

1.現在的日期、時間 DateTime

  • 在C#中可以透過DateTime物件的Now及Today屬性回傳
範例:

    
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(DateTime.Now);
            Response.Write(DateTime.Today);
        }
結果:
2014/1/7 上午 01:37:37
2014/1/7 上午 12:00:00 

2.傳回年、月、日、時、分、秒

  • 在C#中設定一個DateTime變數內容可以將年、月、日、時、分、秒當作參數帶入設定
例:DateTime dt = new DateTime(2008, 1, 1, 18, 30, 30);
  • .NET也將所有的日期時間視為物件,年、月、日、時、分、秒則是日期本身的一部分,因此只要用Year , Month , Day , Hour , Minute , Second屬性,便可知道日期時間的年、月、日、時、分、秒
範例:
    
        protected void Page_Load(object sender, EventArgs e)
        {
            DateTime dt = new DateTime(2008,1,1,18,30,30);
            Response.Write(dt.Year + " ; ");
            Response.Write(dt.Month + " ; ");
            Response.Write(dt.Day + " ; ");
            Response.Write(dt.Hour + " ; ");
            Response.Write(dt.Minute + " ; ");
            Response.Write(dt.Second + " ; ");
        }
結果:
2008 ; 1 ; 1 ; 18 ; 30 ; 30 ;

3.今天星期幾? DayOfWeek

  • 檢查日期時間的DayOfWeek屬性可以告訴你今天星期幾:
範例:

    
    public partial class Training1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(DateTime.Now.DayOfWeek);
        }
    }
結果:
Wednesday

  • Response.Write(DateTime.Now.DayOfWeek.GetHashCode());則是回傳數字,星期二就是2,星期日則是0

4.判斷是否為日期時間? DateTime.TryParse

  • DateIme的TryParse()方法可以協助判斷資料是否為正確的日期格式及可能的日期。也可以檢查時間,使用DateTime的TryParse()方法第一個參數傳入預判斷的日期時間,第二個參數一個日期物件,已取得判斷所得結果。
    
        protected void Page_Load(object sender, EventArgs e)
        {
            DateTime dt;
            Response.Write(DateTime.TryParse("mar 12,2008", out dt)+" , "+dt);
        }
結果:
True , 2008/3/12 上午 12:00:00

5.日期時間的格式化? 

  • 對一個日期時間直接呼叫其ToString()方法會顯示完整的日期時間:
    Response.Write(DateTime.Now.ToString());
  • 若只想取出日期貨時間的部分,並且以簡短或完整的日期時間格式顯示,則可在呼叫ToString()方法時,指定預先定義的日期與時間隔式名稱:
範例:

    
    public partial class Training1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(DateTime.Now.ToString("d")+" , ");
            Response.Write(DateTime.Now.ToString("D") + " , ");
            Response.Write(DateTime.Now.ToString("t") + " , ");
            Response.Write(DateTime.Now.ToString("T") + " , ");
        }
    }
結果:
2014/1/9 , 2014年1月9日 , 下午 11:15 , 下午 11:15:20 ,

  • Response.Write(DateTime.Now.ToString("yy-MM-dd"));//14-01-09
  • 若上一行程式MM改為小寫的mm,此時mm代屌的是分鐘數而非月份
    Response.Write(DateTime.Now.ToString("yy-mm-dd"));//14-55-09        //14年55分09日
  • 若是使用一個格式字元,像是h,m,s,y,d,M必須在字元前面加上%
    Response.Write(DateTime.Now.ToString("%h"));//11      //假設現在11點
  • 單獨自元要在前面加上%字元的真正原因:與.NET預先定義的日期時間格式名稱有所區別
    Response.Write(DateTime.Now.ToString("%M"));// 1
    Response.Write(DateTime.Now.ToString("M"));//1月09日

6.日期時間的加減 

  • 日期相加可以使用AddDays()、AddMonths()、AddHours()
範例:

    
    public partial class Training1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(DateTime.Now.ToString());
            Response.Write(" ; ");
            Response.Write(DateTime.Now.AddDays(5).ToString());
            Response.Write(" ; ");
            Response.Write(DateTime.Now.AddDays(-5).ToString());
        }
    }
結果:
2014/1/10 上午 12:14:49 ; 2014/1/15 上午 12:14:49 ; 2014/1/5 上午 12:14:49
  • 傳入正數為相加,傳入負數為相減

兩個日期時間的差距  Subtract()、TimeSpan

範例:
    
    public partial class Training1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            DateTime dt = new DateTime(2014, 11, 17);
            TimeSpan ts = dt.Subtract(DateTime.Now);
            Response.Write("現在距離我生日還有:" + ts.Days.ToString() + "天 ; ");
            Response.Write("現在距離我生日還有:" + ts.TotalHours.ToString() + "小時 ; ");
            Response.Write("現在距離我生日還有:" + ts.TotalMinutes.ToString() + "分鐘 ; ");
            Response.Write("現在距離我生日還有:" + ts.TotalSeconds.ToString() + "秒");
        }
    }
結果:
現在距離我生日還有:310天 ; 現在距離我生日還有:7463.53980021022小時 ; 現在距離我生日還有:447812.388012613分鐘 ; 現在距離我生日還有:26868743.2807568秒 

沒有留言:

張貼留言