• 【经验分享】取某月的最后一天的方法


    经常我们遇到这样的问题:一是,某月的最后一天是 29,30,还是31 呢?。二是,返回某月的最后一天。这个问题如果,不留神,SQL中有关日期的语句,包含错误的日期,那么就要出错,那么这个怎么解决呢?请参照以下代码。

      public string MonthMaxDay(long Year,long Month,int Flag)
      {

       //获取月、日
      string  Value,Svalue ="";DateTime  Dt;int Day;
      if(Month==0)
      {
        Month=Month+1;
        Year=Year-1;
      }
      if (Flag>0)
      {
        Svalue=Year.ToString("0000")+Month.ToString("00")+"28";
        for(Day=29;Day<=31;Day++)
        {
        try
        {
          Value= Month.ToString("00")+"/" + Day  +"/"+Year.ToString("0000");
          Dt=Convert.ToDateTime(Value);
          Value=Year.ToString("0000")+Month.ToString("00")+Day ;
          Svalue=Value;
        }
        catch(Exception ErrDis)
        {
          ErrDiscroption=ErrDis.ToString();
          goto ErrHd;
        }
        }
      }
      else
      {
        Svalue=Year.ToString("0000")+Month.ToString("00")+"01";
      }
      ErrHd:
        return Svalue;
      }

    ------------------------------------------------------------

    SQL SERVER中
    SELECT DATEADD(D,-1,DATEADD(M,1,CAST(@YEAR AS NVARCHAR(4))+'.'+CAST(@MONTH AS NVARCHAR(2))+'.01'))

    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

    ------------------------------------------------------------

    /// <summary>
    /// 获得某月最后一天的数值
    ///  Returns:最后一天的数值
    /// </summary>
    /// <param name = "p_dTime"> 需要提取的时间 </param>
    /// <returns> 最后一天的数值 </returns>
    public int GetDay(DateTime p_dTime)
    {
        int intResult = 0;
        switch (p_dTime.Month.ToString())
        {
            case "1":
            case "3":
            case "5":
            case "7":
            case "8":
            case "10":
            case "12":
                intResult = 31;
                break;
            case "4":
            case "6":
            case "9":
            case "11":
                intResult = 30;
                break;
            case "2":
                if ((Convert.ToInt16(p_dTime.Year) % 4 == 0) &&
                    (Convert.ToInt16(p_dTime.Year) % 100 != 0) ||
                    (Convert.ToInt16(p_dTime.Year) % 400 == 0))
                    intResult = 29;
                else
                    intResult = 28;
                break;
        }
        return intResult;
    }

    -------------------------------------------------------------

    DateTime dt = System.DateTime.Now;//获得当前日期

    dt = dt.AddDays(1 - dt.Day);        //得到当月的第一天日期
    dt = (dt.AddMonths(1)).AddDays(-1);      //得到当月的最后一天日期

    转载来源:http://blog.tom.com/wangjing_0407/article/876.html

  • 相关阅读:
    Java集合中迭代器
    java 基础归纳总结(三)
    java 基础归纳总结(二)
    java 基础归纳总结(一)
    python之hashlib模块
    python之configparser模块
    Python之time模块
    python之os模块
    python之random模块
    python generator(生成器)
  • 原文地址:https://www.cnblogs.com/a311300/p/1300973.html
Copyright © 2020-2023  润新知