根据天数和开始日期计算结束日期

时间:2013-09-08 21:53:03

标签: variables date date-arithmetic

我正在制作脚本,用户可以在其中制作某种类型的订单。现在,当用户下订单时,他们可以选择在#天内持续多久。下订单后,我需要批准他们的订单,并且批准日期记录在我的数据库中。现在我需要的是在他们的用户面板中显示自我批准之日他们的包裹将持续多少天。因此,例如,如果我在2013年9月8日批准他们的订单并且他们选择订单持续7天,我不会让他们在第二天看到他们面板里面他们已经离开了多少天,所以7天,6天,5天等等......当他们于2013年9月16日来到他们的小组时,一直到“0天”。

我对这两个值有以下变量:

$row_ordersResults['date'] - 我批准订单的日期 $row_ordersResults['drip_feed'] - 他们的订单不会持续的天数

我自己尝试了很多组合,但我完全坚持这个并且无法使其发挥作用。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

momentjs.com上的图书馆很酷。但是如果你只想简单地计算两个时间值之间的“日期差异”,那么有一种相对简单的方法可以做到。我假设你想用Javascript完成它。

您需要做的就是清除两个日期的小时/分钟/秒/毫秒字段,计算它们之间的差异。将下面的脚本放在任何Web浏览器中,您将看到它是如何工作的。

<script>
function foo() {
    var d1 = new Date(2013, 8, 12, 13, 40, 1, 333); // any date value, last 4 params can be anything
    var d2 = new Date(2013, 9, 3, 11, 42, 32, 533);

    d1.setHours(0); d1.setMinutes(0); d1.setSeconds(0); d1.setMilliseconds(0);
    d2.setHours(0); d2.setMinutes(0); d2.setSeconds(0); d2.setMilliseconds(0);
    daysLeft = (d2.getTime() - d1.getTime())/(24*60*60*1000);

    alert('Dear customer, there is(are) ' + daysLeft + ' day(s) left on your order!' );
}
</script>
<a href="#" OnClick="foo()">Show Remaining Days on Order</a>

编辑:添加PHP版本

<?php

$d1 = New DateTime('2013-08-28 06:25:00');
$d2 = new DateTime(); // now
$drip = 55;

$interval = $d2->diff($d1); // time difference
$days_left = $drip - $interval->format('%a'); // in days, subtract from drip
echo "There are $days_left days left\n";

?>

答案 1 :(得分:0)

我希望我没有因为没有提出具体答案而被标记,但时间和日期计算非常繁琐,而且JavaScript的Date()提供的选项有限。因此,我建议您在momentjs.com上查看moment.js,而不是提供一些丑陋的代码。将脚本附加到页面后,您可以轻松管理所有类型的日期格式,并设置一个功能,允许您对日期进行数学运算并自动生成日期范围 - 甚至可以让您将其格式化为用户友好的格式,如“3天”,我认为这是你想要的。如果你的应用程序与时间有关,而且大多数情况都有,我不能足够推荐Moment。