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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/// <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;
               }
           }
 
 
 
 
 
       }

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
---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

 

posted @   ®Geovin Du Dream Park™  阅读(719)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2013年5月 >
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示