2013-09-08 6 views
0

Я работаю над скриптом, где пользователи могут делать определенные заказы. Теперь, когда пользователи делают заказ, они могут выбрать, как долго они будут длиться в течение нескольких дней. После того, как заказ будет размещен, мне необходимо одобрить их заказ, и дата утверждения будет записана в моей базе данных. Теперь мне нужно показать внутри своей панели пользователей, сколько дней их пакет будет длиться с момента моего одобрения. Так, например, если я одобрил их заказ 08 сентября 2013 года, и они выбрали для заказа последние 7 дней, я не буду их видеть внутри них на каждый следующий день, когда они заходят в систему, сколько дней у них осталось, поэтому 7 дней, 6 дней, 5 дней и т.д ... вплоть до «0 дней», когда они приходят на их панели на 16 сентября 2013 г.Рассчитать дату окончания на основе дня и даты начала

Я следующие переменные для этих двух значений:

$row_ordersResults['date'] - дата я утвердившего заказ $row_ordersResults['drip_feed'] - Количество дней, в течение которых они не будут вести свой заказ

Я сам пытался использовать множество комбинаций, но я полностью застрял в этом и не могу заставить его работать.

Спасибо за помощь!

+0

Это не поможет, что мы даже не знаем, какой язык вы используете ... –

ответ

1

Библиотеки на сайте momentjs.com довольно круты. Но если вам просто нужно что-то простое вычислить «разницу дат» между двумя значениями времени, существует относительно простой способ сделать это. Я предполагаю, что вы сделали это в Javascript.

Все, что вам нужно сделать, это очистить поля часа/минуты/секунды/миллисекунды двух дат, рассчитать их разницу в днях. Поместите скрипт ниже в любой веб-браузер, и вы увидите, как он работает.

<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> 

EDIT: добавление 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"; 

?> 
+0

спасибо за помощь, однако мне это нужно сделать в PHP, также у меня нет второй даты, так как мне сначала нужно вычислить вторую дату на основе # дней или переменной $ row_ordersResults ['drip_feed'] –

+0

PHP-версия еще проще, есть класс DateTime и Interval, который вы можете использовать, см. мое редактирование выше. – stevel

+0

спасибо, его работа OK –

0

Надеюсь, что я не получаю заметки, не предлагая конкретного ответа, но расчеты по времени и дате очень утомительны, а функция Date() JavaScript предоставляет ограниченные возможности. Поэтому вместо того, чтобы предлагать некоторый уродливый код, я предлагаю вам взглянуть на moment.js на momentjs.com. Когда вы присоедините сценарий к своим страницам, вы можете легко управлять всеми форматами дат и настраивать функцию, которая позволит вам выполнять математику по датам и автоматически генерировать диапазоны дат - это даже позволит вам отформатировать их для пользователя таких как «через 3 дня», и я думаю, это то, что вы хотите. Если ваше приложение имеет какое-либо отношение ко времени, и большинство из них, я не могу рекомендовать Moment достаточно высоко.

+0

Спасибо большое за ответ, я буду взгляните на этот скрипт. Однако, если у кого-то есть больше предложений, это было бы здорово. Снова спасибо за помощь Чарльз. –