Csharp: 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界

简介: /// <summary> /// 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界 /// </summary> /// <param name="sender"></param> /// <param name="e"><
/// <summary>
        /// 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {

            DateTime enterStar,enterEnd,stardate1, endate1, stardate2, enddate2;
            int betweenyear, betweenmonth, betweenday;
            enterStar=dateTimePicker1.Value;
            enterEnd=dateTimePicker2.Value;
            TimeSpan ts = enterEnd - enterStar;
            betweenyear = TimeSpanExtensions.GetYears(ts);
            betweenmonth = TimeSpanExtensions.GetMonths(ts);
            betweenday = ts.Days;
            //betweenday=enterStar.CompareTo(enterEnd);
            if (betweenday > 0)
            {
                if (betweenyear == 0 && betweenmonth == 1)//同年不同月
                {
                    stardate1 = dateTimePicker1.Value;//月初
                    dateTimePicker3.Value = stardate1;
                    endate1 = new DateTime(stardate1.Year, stardate1.Month, DateTime.DaysInMonth(stardate1.Year, stardate1.Month));//DaysInMonth 指定年月中的天數
                    dateTimePicker4.Value = endate1;//月末
                    stardate2 = new DateTime(enterEnd.Year, enterEnd.Month, 1);
                    dateTimePicker5.Value = stardate2;//月初
                    enddate2 = enterEnd;
                    dateTimePicker6.Value = enddate2;//月末

                }
                if (betweenyear == 1 && betweenmonth == 1)//不同年不同月
                {
    		        stardate1=enterStar;//月初
                    dateTimePicker3.Value = stardate1;
		            endate1=new DateTime(stardate1.Year, stardate1.Month, DateTime.DaysInMonth(stardate1.Year, stardate1.Month));//月末
                    dateTimePicker4.Value = endate1;
                    stardate2=new DateTime(enterEnd.Year, enterEnd.Month, 1); //月初
                    dateTimePicker5.Value = stardate2;
                    enddate2=enterEnd;//月末
                    dateTimePicker6.Value = enddate2;

 		
                }
                if (betweenyear == 0 && betweenmonth == 0)//同年同月
                {
                    stardate1 = enterStar;//月初
                    dateTimePicker3.Value = stardate1;
                    endate1 = enterEnd;//月末
                    dateTimePicker4.Value = endate1;
                }
            }





        }

---sql 請假輸入兩個日期:(只考慮最多相差一個月)对于不同月份的数据考虑月份数据分界
---1.要判斷是否同一年同一月,不同年,不同月要分開顯示兩組不同月日期之間數據
---2.同年不同月,要分開顯示兩組不同月日期之間數據
---3.同年同月不用分組顯示
declare @enterStar datetime,@enterEnd datetime,@stardate1 datetime,@endate1 datetime,@stardate2 datetime,@enddate2 datetime
declare @betweenyear int,@betweenmonth int,@betweenday int
set @enterStar='2012-12-05'
set @enterEnd='2013-01-25'
select @betweenyear=DATEDIFF(year, @enterStar, @enterEnd) 
SELECT @betweenmonth =DATEDIFF(month, @enterStar, @enterEnd)
SELECT @betweenday=DATEDIFF(day, @enterStar, @enterEnd)
if (@betweenday>0)
begin
	if(@betweenyear=0 and @betweenmonth=1)
	begin
   		select @stardate1=@enterStar--Dateadd(mm,datediff(mm,0,@enterStar),0) --月初
		select @endate1=Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterStar)+1,0)) --月末
   		select @stardate2=Dateadd(mm,datediff(mm,0,@enterEnd),0) --月初
		select @enddate2=@enterEnd--Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterEnd)+1,0)) --月末
		select @stardate1,@endate1,@stardate2,@enddate2
	end
	if(@betweenyear=1 and @betweenmonth=1)
	begin
		
   		select @stardate1=@enterStar--Dateadd(mm,datediff(mm,0,@enterStar),0) --月初
		select @endate1=Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterStar)+1,0)) --月末
   		select @stardate2=Dateadd(mm,datediff(mm,0,@enterEnd),0) --月初
		select @enddate2=@enterEnd--Dateadd(ms,-3,dateadd(mm,datediff(m,0,@enterEnd)+1,0)) --月末
 		select @stardate1,@endate1,@stardate2,@enddate2
	end
	if(@betweenyear=0 and @betweenmonth=0)
	begin
		select @stardate1=@enterStar
		select @endate1=@enterEnd
 		select @stardate1,@endate1 
	end

end

目录
相关文章
|
4月前
|
Java
利用Java实现月份的天数
利用Java实现月份的天数
82 0
|
4月前
|
数据库
指定月份显示每天的数据
指定月份显示每天的数据
|
4月前
|
数据处理 Python
Python基础教程——日期与时间
Python基础教程——日期与时间
|
4月前
日期工具,校验当年开始年份,结束年份,当月开始日期,结合素日期
日期工具,校验当年开始年份,结束年份,当月开始日期,结合素日期
|
4月前
moment常用操作(日期加减、获取月初月末、季度、年)
moment常用操作(日期加减、获取月初月末、季度、年)
1297 0
|
12月前
|
SQL Oracle 关系型数据库
[已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
[已解决]mysql查询一周内的数据,解决一周的起始日期是从星期日(星期天|周日|周天)开始的问题
wustojc4005求月份对应的英文名称及天数
wustojc4005求月份对应的英文名称及天数
26 0
|
JavaScript 前端开发
javascript以当前日期为准计算当月、上月、下月直接输出日期的解决方案
javascript以当前日期为准计算当月、上月、下月直接输出日期的解决方案
81 0
|
Java 程序员
Java 案例练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为
Java 案例练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为
474 0
Java 案例练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为
Python 获取当天日期、前一天日期、前半个月
Python 获取当天日期、前一天日期、前半个月