日期逻辑的一个简单案例。计算间隔
A simple case of date logic. Calculate intervals
我在想出计算准确值的正确方法时遇到问题。这就是问题所在。我有一个资源可以每周、每天和每小时定价。
假设每小时 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;
我认为周逻辑和日逻辑是合理的。现在我只需要剩余时间的逻辑。有什么指点吗?
你应该从最大的间隔开始,从持续时间中取出它,然后从较小的开始,取出剩余的秒数并将它用于最小间隔:
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,因为它开始了新的一小时。
我在想出计算准确值的正确方法时遇到问题。这就是问题所在。我有一个资源可以每周、每天和每小时定价。
假设每小时 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;
我认为周逻辑和日逻辑是合理的。现在我只需要剩余时间的逻辑。有什么指点吗?
你应该从最大的间隔开始,从持续时间中取出它,然后从较小的开始,取出剩余的秒数并将它用于最小间隔:
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,因为它开始了新的一小时。