【发布时间】:2012-08-29 01:50:28
【问题描述】:
我正在编写一个 Java 程序,它会自动生成一定数量的“单位”供用户执行(实际目的在这个问题中并不重要)。
我正在努力寻找一种好方法来确定下周向用户提供多少这些“单位”。
计算意图:
- 给出特定周的“单位”
- 根据一周中的实际日期(周一至周五)计算一周的单位
- 当月所有单位的帐户(例如,如果是当月的最后一周,则给出整周所有可能的单位)
- 如果估计,应该高估(由于程序的性质,低估会更糟。)
- 单位不能是小数(因此转换为 int)
我拥有的变量:
- 当月要完成的“单位”数量
我尝试了几种不同的方法,到目前为止,我最好的方法是:
public static int getRemainingUnitsThisWeek() {
return (int) Math.round(((double) getUnitsThisMonth() / (((30 - (double) DateTime.now().getDayOfMonth()+1) / 7) < 1 ? 1 :
((30 - (double) DateTime.now().getDayOfMonth()+1) / 7))) / (double)DateTime.now().getDayOfWeek());
}
我最终遇到的问题(具体来说,我仍然不满意它是如何做到的)是在每月最后一周给出的“单位”中仍然除以星期几(这反过来又每天给你一个低得多的数字——即使用户需要在月底之前收到所有的“单位”)。
您有任何问题,尽管问!
PS。我在 DateTime.now() 函数中使用的库是joda-time。
【问题讨论】:
-
不是特别是,至少对我来说不是。我也没有看到其他人的任何答案。
-
我现在没有时间重写它。我是新来的,最好编辑问题还是用不同的措辞重新发布?
-
这取决于你做什么,但如果你没有得到答案,请考虑澄清你的问题,以便更容易理解。我们是志愿者,虽然您可能没有太多时间,但您正在向我们寻求免费帮助,因此您有责任努力构建您的问题,使其尽可能清晰。我们只要求您在提出问题时付出尽可能多的努力,就像您希望别人回答时那样,这并不是要求太多。
标签: java algorithm datetime methods