Member 13637584 Ответов: 2

Рассчитать количество дней в PHP


Hi I am trying to basically, store current date, get the date of when user registered and compare to set number of days which is 7
See code below - basically, the user is allowed 7 days to complete something. What I want to do is, Set the amount of days to 7 and then this can be compared with the dates so it outputs how many days they have left..so when they first go onto the web page, itl start of with 7 and countsdown the days 6,5,4,3,2,1... each day

Can someone help with the below?


Что я уже пробовал:

<?php

include ("dbConnect.php");
$UserID =$_SESSION['currentUserID'];

$dbQuery=$conn->prepare("select Date from Results where UserID=$UserID");
$dbQuery->execute();

  while($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)) {
  $StartDate=$dbRow['Date'];
   $CurrDate= date("Y-m-d");   
    $Days=7;
-added 
function dayCount($CurrDate, $StartDate) {
    $first_date = strtotime($StartDate);
    $second_date = strtotime($CurrDate);
    $days_diff = $second_date - $first_date;
    return date('d',$days_diff);
}

 }

2 Ответов

Рейтинг:
1

Richard MacCutchan

Использовать РНР: время - ручное[^] ценность. Легче вычислить различия.


Maciej Los

5ed!

Member 13637584

это просто кажется, что возвращает меня обратно 0, несмотря ни на что?

Richard MacCutchan

Вы используете строки в качестве значений даты. Вы не можете вычислять различия с помощью строк, вы должны использовать числовые типы.

Member 13637584

Можете ли вы помочь мне, пожалуйста?

Richard MacCutchan

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

$first_date = strtotime("03/04/18");
var_dump($first_date);
$second_date = strtotime("03/27/18");
var_dump($second_date);
$secs_diff = $second_date - $first_date;
var_dump($secs_diff);
$days = $secs_diff / 86400;
var_dump($days);

Рейтинг:
0

W∴ Balboos, GHB

Так как вы делаете это из базы данных,

1) храните даты как фактические даты и время
2) Используйте функцию datediff (SQL) или что-то близкое в вашей БД.

Возвращаемое значение может быть чем-то вроде 7-DATEDIFF(...), которое вы должны привести как int, так что это целое число.


Member 13637584

Не могли бы вы помочь мне с использованием моего кода? спасибо

W∴ Balboos, GHB

И я, и ответ (1) оказали вам некоторую помощь. Указаны проблемы и альтернативные методы получения разницы дат.

Это и есть помощь. "Делай за меня мою работу", если ты это имеешь в виду, - это не помощь.