伪代码如下,求高手指点。/// <summary>
/// 获取指定期间根据条件变化后的值
/// </summary>
/// <param name="currentPeriod">当前期间,值格式为 年*100+月</param>
/// <param name="yearCondition">年份条件,取值为所有整数</param>
/// <param name="monthCondition">月份条件,取值为所有整数</param>
/// <returns></returns>
public long GetPeriod(long currentPeriod, long yearCondition, long monthCondition)
{//获取指定期间同年上月 可写做 yearCondition=0,monthCondition=-1  //获取指定期间上年同期 可写做 yearCondition=-1,monthCondition=0  
//也可写做 yearCondition=0,monthCondition=-13   return 0;
}

解决方案 »

  1.   

    public long GetPeriod(long currentPeriod, long yearCondition, long monthCondition)
    {
       long result;
       long oldyear,oldmonth,newyear,newmonth;
       long yearadd,monthadd;
       yearadd=yearCondition+monthcondition/13;
       monthadd=monthCondition%13;
       oldyear=currentperiod/100;
       oldmonth=currentperiod-oldyear*100;
       newyear=oldyear+yearadd;
       newmonth=oldmonth+monthadd;
       result=newyear*100+newmonth;
       return result;
     }
      

  2.   

     public static long GetPeriod(long currentperiod, long yearCondition, long monthCondition)
            {
                
                long result;            long year = currentperiod / 100;
                long month = currentperiod % 100;            year = year + yearCondition;            long yearCount = monthCondition / 12;            year = year + yearCount;            if ((monthCondition % 12 + month) <= 0)
                {
                    year = year - 1;
                    month = 12 + monthCondition % 12 + month;
                }
                else
                {
                    if ((monthCondition % 12 + month) > 12)
                    {
                        year = year + (monthCondition % 12 + month) / 12;
                        month = ((monthCondition % 12 + month)) % 12;
                    }
                    else
                    {
                        month = monthCondition % 12 + month;
                    }            }
                result = year * 100 + month;
                return result;
            }
      

  3.   

    好吧,那个算法有个小瑕疵。我以为你能调试出来。我加几句好了。
    public long GetPeriod(long currentPeriod, long yearCondition, long monthCondition)
    {
      long result;
      long oldyear,oldmonth,newyear,newmonth;
      long yearadd,monthadd;
      yearadd=yearCondition+monthcondition/12;
      monthadd=monthCondition%12;
      oldyear=currentperiod/100;
      oldmonth=currentperiod-oldyear*100;
      newyear=oldyear+yearadd;
      newmonth=oldmonth+monthadd;
      //新的月份算出来有可能不在1~12之间。
      //这里要处理一下。
      if(newmonth<=0)
      {
         newyear--;
         newmonth+=12;
      }
      if(newmonth>12)
      {
         newyear++;
         newmonth-=12;
      }
      //现在好了。去试一下。
      result=newyear*100+newmonth;
      return result;
     }
      

  4.   


    不好意思,好久没上csdn,忘了帖子的事了。
    我自己当时是这样实现的
     static public long GetPeriod(long Period, string Year, string Month)
            {
                long result = 0;            long year = Period / 100;
                long month = Period % 100;            long yearCondition = 0;
                long monthCondition = 0;            if (Year != "?")
                {
                    yearCondition = long.Parse(Year);
                    year = year + yearCondition;
                }            if (Month != "?")
                {
                    monthCondition = long.Parse(Month);                //先将月折算到年
                    long yearCount = monthCondition / 12;
                    year = year + yearCount;                #region 计算实际月份                if ((monthCondition % 12 + month) <= 0)
                    {
                        year = year - 1;
                        month = 12 + monthCondition % 12 + month;
                    }
                    else if ((monthCondition % 12 + month) > 12)
                    {
                        year = year + (monthCondition % 12 + month) / 12;
                        month = ((monthCondition % 12 + month)) % 12;
                    }
                    else
                    {
                        month = monthCondition % 12 + month;
                    }                #endregion            }            result = year * 100 + month;            return result;        }