dfaf.gif 

程式設計上的時間計算 還真的是門學問
可能是因為用到的時機少
所以平常不熟悉

因此 有必要記錄一下

                //當天日期
                DateTime toDay = DateTime.Now;
 
                //隔天日期
                DateTime nextDay = DateTime.Now.AddDays(1);
 
之前有看過取得一個月的最後一天 例如2月 那麼就會指定3月的第一天 然後減掉一天
就是使用.AddDays(-1)
 
但是後來發現 每個月的最後一天 其實也就是當月的是日期數
例如1月有31天 所以 1月的最後一天 就是31號
因此 C#有個函數 可以回傳 指定年月的天數
 
DateTime.DaysInMonth(2010,2);
 
 
日曆物件的運用
 
 //選擇日期
        protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {
 
            //選擇的日期
            DateTime sDay = Calendar1.SelectedDate;
 
            //隔天日期
            DateTime nextDay = sDay.AddDays(1);
 
            ..............其他處理
        }
 
 
//選擇月份
        protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
        {
             
            //取得選取的月份
            DateTime sMon = Calendar1.VisibleDate;
 
            //下個月
            DateTime nextMon = sMon.AddMonths(1);
 
            .............其他處理
        }
 
 
 
以下這一段
是因為我把資料顯是在 GridView上 因此在上面做一些處理
//資料產生時進行處理
        protected void gv_proj_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row .RowType ==DataControlRowType .DataRow  )
            {
                GridViewRow gr = e.Row;
               
                //比對資料
 
                //上班時間
                DateTime sTimes = Convert.ToDateTime(gr.Cells[1].Text);
//gr.Cells[1] 是上班時間
                //下班時間
                DateTime oTimes = Convert.ToDateTime(gr.Cells[2].Text); //gr.Cells[2] 是下班時間
 
 
 
                //判斷上班時間
                //只顯示時間部分

                gr.Cells[1].Text = (Convert.ToDateTime(gr.Cells[1].Text)).ToString("HH:mm"); //時間.ToString("hh:mm") 為12小時制  "HH:mm" 則為24小時制
                
                //上班時間超過8點30分 顯示為紅色
                if (sTimes.Hour >=8 && sTimes.Minute >30)
                {
                    gr.Cells[1].ForeColor = System.Drawing.Color.Red;
                }
 

                //判斷下班時間
                //只顯示時間部分
                //下班時間5點30分早 顯示為紅色
                gr.Cells[2].Text = (Convert.ToDateTime(gr.Cells[2].Text)).ToString("HH:mm");
 
                if (oTimes.Hour <= 17 && oTimes.Minute <30)
                {
                    gr.Cells[2].ForeColor = System.Drawing.Color.Red;
                }
 
               
                //判斷工時
               
                TimeSpan  ts=oTimes-sTimes;
                if (ts.Hours <8)
                {
                    //gr.Cells[1].Text = gr.Cells[1].Text + "<br/>" + "工時不足";
                    gr.Cells[2].Text = gr.Cells[2].Text + "<br/>" + "工時 : "+ts.Hours .ToString ("00")+":"+ts.Minutes .ToString ("00") ;
 
                    //計算不足時間
                    TimeSpan t = new TimeSpan(8, 0, 0);
                    t  = t  - ts;
                    gr.Cells[2].Text += "  / 不足: "+t.Hours.ToString ("00") +":"+t.Minutes.ToString ("00")   ;
                }
             }
        }
 
 
arrow
arrow
    全站熱搜

    ADOLPH 發表在 痞客邦 留言(1) 人氣()