正邦巨亏的原因找到了!金币求助一段代码~~



4月21日正邦公布重整延期,短线最大的退市风险解除,那几天加班加昏了头,楼主看了公告,几分钟之内就决定买入,一早红盘买入,然后被杀的稀里哗啦。。。
原来,买入时完全忘了即将公布年报,然后披星戴月。。。

为啥会忘呢,因为最近工作太忙,尤其是一个浪Chao软件开发的一个项目尤其恼人!浪C软件的码农简直让我哭笑不得,很多很简单的东西居然都搞不定,有时候真把我气的笑了。。。

举个简单的例子,设备定期检测,检测合格要刷新有效期,公式是:
有效日期=检测日期+检测周期(月)-1天;
例如今天2023-4-29检测,检测周期是12个月,则有效日期=检测日期+12个月-1天=2024-04-28;
检测周期有6个月、12个月、24个月、60个月不等。
逻辑很清楚吧。
且看浪C软件的码农是怎么干的。。。

回合一:
浪C软件的码农写完代码,我一测试,发现有效日期跟理论值差了五六天的样子,就问他是怎么计算的,他说是将检测周期(月)乘以30,加上检测日期再减一天,就得到了有效日期,我说这样肯定不对啊,这样一年只有360天了,差了好几天!
我说在excel中很简单啊,直接加月份就可以了。
浪C软件的码农答曰,在浪C的软件中没有封装类似的功能,不能直接调用,只能自己写代码。
那就只好让他再改下。

回合二:
浪C软件的码农改完代码,这次我学乖了,我先问他,是怎么计算的,他说是用检测周期(月)除以12,再乘以365,加上检测日期,就得到了有效日期。我说这样遇到闰年肯定就有问题啊,一年366天,有效日期就差了一天,而且没有办法修改,肯定不行啊!

回合三:
回合二不是差了一天没有办法修改嘛,这次浪C软件的码农学乖了,直接用检测日期+检测周期(天)-1天,检测周期(天)-1天设置默认值,检测周期如果是一年,那默认值就设置为365-1=364天。如果闰年怎么办,那就需要手动修改为365;到了闰年的第二年,又需要将365改回364。如果检测周期如果是6个月,由于需要考虑闰年,备选值就有180/181/182/183/184。。。

我彻底崩溃了。。。浪C软件这么大的公司,做的软件怎么这么水!!!
由于没有想到好的解决思路,这个问题目前暂时放一边了,但是如果后续如果没有好的办法,很可能就这样了。

五一外面人太多,加上最近比较忙,我没有出去玩,先休息下。
抽空又想了一下这个问题,由于闰年的影响,还有周期6个月的起始时间要受到大月31天、小月30天的影响,貌似确实还挺复杂的。

不过这应该是个会经常遇到的问题,只好请教下各位高手,有没有好的算法或者代码,如果能够提供有效信息的金币答谢,如果能够完美解决的话,大量金币答谢。
先行谢过了~~
发表时间 2023-04-29 10:58     来自四川

赞同来自: eeoo 海之央 qwsd54362627 Klaus199008

1

loobai

赞同来自: dingo49

先按检测周期把月数和年数加上去,具体就是用检测周期月数整除12,把商加在年数上,余数加在月数上,如果月数超过12就往年数进1。得到日期D1。
然后检验D1,如果是4、6、9、11月的话,再检验是不是31号,是就退到30号;如果是2月份的话,再检验是不是大于等于29号,如果是再检验是不是闰年,如果是闰年就退到29号,不是闰年就退到28号。得到日期D2。判断闰年的规则,请自行百度。
然后在D2上减去一天。如果D2是1号的话,那就月数减1(如果减完后月数等于0,就要往年数退1),日数设为31,然后重复第二步的检验。

验收测试要遍历所有月份的首尾日,特别是起始日是2月29号、1月1号,起始日是8月29,30,31号且检验周期为六个月,到期日是闰年的2月27号。
2023-04-29 15:48修改 来自广东 引用

要回复问题请先登录注册

发起人

问题状态

  • 最新活动: 2023-12-22 12:36
  • 浏览: 12444
  • 关注: 47