十二月的下一月是明年

« 返回上页作者:乔夫  分类: 网事悠游  日期:2008-12-13 at 12:36  

又犯低级错误了。给交科院隧道所写的的那个考勤系统,有个“月度差假计划安排”的数据表,很简单的,稍微不同的地方是“月度”不是就指本月而是从本日算起未来的一月时间。所以,这里边自然就得判断下个月的天数用以加减本月或再下月的剩余天数。

nextMonthDayst=cDate(year(date)&"-"&month(date)+1&"-1") '下月第一天
nextMonth=dateAdd("m",1,nextMonthDayst) '下月份
nextMonthDays=dateDiff("d",nextMonthDayst,nextMonth) '下月天数

立竿见影,当时也就没想更多。结果那天因故想参照一下系统,调试时竟然发现输出结果异常。怪事了,之前都好好的我又没动过代码。心想,肯定又是那里的判断不严谨的原因。但细想一下这里又无须考虑闰月什么的,何来判断?再看代码,再排查,结果问题就是粗心大意,恰恰错就错在該判断没有判断。

就这一句:

nextMonthDayst=cDate(year(date)&"-"&month(date)+1&"-1")

只有月份累加而忘记了一个重要的年限,所以,一到了像现在年终岁尾就出现问题了。比如 2008 年 12 月 12 日到 2008年 1 月 1 日不是还有多少天,而是过了多少天。而事实上要取的应该是 2009 年 1 月 1 日,结果的真假,也就造成了页面输出的异常。最后加个判断修改一下,OK,问题解决!

function nextMonthDays() '计算下月天数
  if month(date)=12 then '本月为年终时
    nextMonthDayst=cDate(year(date)+1&"-1-1") '明年元旦
   else
    nextMonthDayst=cDate(year(date)&"-"&month(date)+1&"-1") '下月第一天
  end if

  nextMonth=dateAdd("m",1,nextMonthDayst) '下月份
  nextMonthDays=dateDiff("d",nextMonthDayst,nextMonth) '下月天数
end function

想想当时的确有够白痴的,这么简单的条件竟然也能被自己忽略,巨汗!看来数学拿鸭蛋的我,的确没有慎密的逻辑思维,真不是这块料!还是赶紧地洗脚上岸,别再出来丢人现眼了。又说起来,年龄大了我还觉得自己不是搞设计的料哩,早就想解脱!是这也不行,那也不好,这以后的日子我可咋活哦!真个回家念《锄禾》么?唉……

好在客户似乎还没发现,马上行动,我的悄悄地干活,哈哈……

更多分享

1 条评论  Trackback Url:http://ichov.com/web/december-next-month.html/trackback

One Response to “十二月的下一月是明年”

  1. Bwskyer says:

    你的大大的不厚道…

有啥说啥 Leave a Reply