程式設計上的時間計算 還真的是門學問
可能是因為用到的時機少
所以平常不熟悉
因此 有必要記錄一下
//當天日期
DateTime toDay = DateTime.Now;
DateTime toDay = DateTime.Now;
//隔天日期
DateTime nextDay = DateTime.Now.AddDays(1);
DateTime nextDay = DateTime.Now.AddDays(1);
之前有看過取得一個月的最後一天 例如2月 那麼就會指定3月的第一天 然後減掉一天
就是使用.AddDays(-1)
但是後來發現 每個月的最後一天 其實也就是當月的是日期數
例如1月有31天 所以 1月的最後一天 就是31號
例如1月有31天 所以 1月的最後一天 就是31號
因此 C#有個函數 可以回傳 指定年月的天數
DateTime.DaysInMonth(2010,2);
日曆物件的運用
//選擇日期
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
//選擇的日期
DateTime sDay = Calendar1.SelectedDate;
DateTime sDay = Calendar1.SelectedDate;
//隔天日期
DateTime nextDay = sDay.AddDays(1);
DateTime nextDay = sDay.AddDays(1);
..............其他處理
}
}
//選擇月份
protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
{
protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
{
//取得選取的月份
DateTime sMon = Calendar1.VisibleDate;
DateTime sMon = Calendar1.VisibleDate;
//下個月
DateTime nextMon = sMon.AddMonths(1);
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;
//比對資料
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] 是下班時間
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小時制
//只顯示時間部分
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;
}
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");
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;
}
{
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") ;
}
TimeSpan t = new TimeSpan(8, 0, 0);
t = t - ts;
gr.Cells[2].Text += " / 不足: "+t.Hours.ToString ("00") +":"+t.Minutes.ToString ("00") ;
}
}
}
}
全站熱搜