C#实现日期计算器

最近在做一个项目,其中要用到:输入一个初始日期,后台给这个日期加上n天,然后再存储进SQL数据库中。

思路有三点:

1.可以从数据库层面操作 使用DATEADD函数,

具体参考此博客SQL Server日期时间加减函数–DATEDIFF、DateAdd_十言1的博客-CSDN博客

2.使用DateTime函数

参考了C# 日期加天数_c#日期加天数_CY2017的博客-CSDN博客这篇博客的代码,

博客中的代码对于    “要加的日期天数-本月剩余天数>下月的天数”   的情况有问题,

比如初始5.16,要加60天,就会得到4.45的日期。

下面是我修改过的代码

public static string ReTime(string data, int str)//data为初始日期,str为增加的天数
        {
            DateTime dt = DateTime.Parse(data);
            int year = dt.Year;
            int month = dt.Month;
            int day = dt.Day;
            int n = DateTime.DaysInMonth(year, month);
            int k = day + str;
            if (k > n)
            {
                day = str - (n - day);
                month = month + 1;
                while(day>DateTime.DaysInMonth(year,month)){
                    day = day - DateTime.DaysInMonth(year, month);
                    month = month+1;
                    if (month > 12)
                    {
                        month = 1;
                        year = year + 1;
                    }
                }
                
                if (month > 12)
                {
                    month = 1;
                    year = year + 1;
                }
            }
            else
            {
                day = day + str;
            }
            string c = year + "-" + month + "-" + day;
            return c;
        }

当然这种写法是较为繁琐的,相当于写了遍底层逻辑,完全可以用封装好的函数来操作;

3.DateTime函数

protected string DateAdd(string date,int n)
        {
             return DateTime.Parse(date).AddDays(n).ToString();
        }

简直不要太简单。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值