一个简单的日期逻辑案例。计算间隔

时间:2016-04-29 07:19:20

标签: java android datetime jodatime

我遇到了计算准确值的正确方法。这是问题所在。我有一个可以每周,每天和每小时定价的资源。

让我们假设每小时花费5英镑,每天花费20英镑,每周花费150英镑。

我想要做的是计算预订资源的费用,这样如果有人预订了1周,3天和2小时,他们应该只支付150 + 60 + 10 = 220

我正在使用JodaTime作为参考。以下是我到目前为止的情况:

hour_price = resource.getPricing().getHourly() * ((mDuration.toStandardSeconds().getSeconds() % 86400) % 24);
day_price = resource.getPricing().getDaily() * (mDuration.toStandardDays().getDays() % 7);
week_price = resource.getPricing().getWeekly() * (Math.floor(mDuration.toStandardDays().getDays() / 7));
double cost = week_price + day_price + hour_price;

我认为周逻辑和日逻辑是合理的。现在我只需要剩余小时逻辑。有什么指针吗?

1 个答案:

答案 0 :(得分:1)

你应该从最大的时间间隔开始,从持续时间中取出它,然后用更小的时间,用剩余的时间间隔并以最小的间隔使用它:

week_price = resource.getPricing().getWeekly() * (mDuration.toStandardDays().getDays() / 7);
day_price =  resource.getPricing().getDaily() * (mDuration.toStandardDays().getDays() % 7);
hour_price = resource.getPricing().getHourly() * ((mDuration.toStandardSeconds().getSeconds() % 86400) / 3600);

因此,在最后一步中,您需要花费几周的时间,在数周和数天内减去剩余的小时数(在一天内的秒数 - 在24小时内除以之后的剩余时间),然后将其除以每小时的秒数得到多少小时。如果你还有几秒钟,那么再添加一小时到hour_price,因为它开始了新的一小时。