Próbuję ustalić datę, która jest rok od daty określonej przeze mnie.
Mój kod wygląda tak:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Zwraca niewłaściwą datę. Jakieś pomysły, dlaczego?
Próbuję ustalić datę, która jest rok od daty określonej przeze mnie.
Mój kod wygląda tak:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Zwraca niewłaściwą datę. Jakieś pomysły, dlaczego?
Odpowiedzi:
Aby dodać jeden rok do dzisiejszej daty, użyj:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
W przypadku innych przykładów musisz zainicjować $ StartingDate wartością datownika, na przykład:
$StartingDate = mktime(); // todays date as a timestamp
Spróbuj tego
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));
lub
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
$futureDate=date('Y-m-d', strtotime('+1 year'));
$ futureDate jest za rok od teraz!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$ futureDate jest o rok od $ startDate!
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
tak , jak wspomniano poniżej K Prime.
Próbować: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
,
się .
i pracował date("Y-m-d",strtotime('+1 year '.$startDate))
;
// Declare a variable for this year
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;
// Check your code
echo "This year is ";
echo $this_year;
echo "<br />";
echo "Next year is ";
echo $next_year;
echo "<br />";
echo "The year after that is ";
echo $year_after;
Wolę podejście OO:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
W DateTimeImmutable
przeciwnym razie zmodyfikujesz również oryginalną datę! więcej na temat DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Jeśli chcesz tylko od dzisiejszej daty, zawsze możesz zrobić:
new \DateTimeImmutable('-1 Month');
strtotime()
zwraca bool(false)
, ponieważ nie może przeanalizować ciągu '+one year'
(nie rozumie „jeden”). false
jest następnie niejawnie rzutowany na integer
znacznik czasu 0
. Dobrym pomysłem jest sprawdzenie strtotime()
, czy dane wyjściowe nie są, bool(false)
zanim przejdziesz do innych funkcji.
Zwracane wartości
Zwraca znacznik czasu w przypadku sukcesu, w przeciwnym razie FALSE. W wersjach wcześniejszych niż PHP 5.1.0 ta funkcja zwracała -1 w przypadku błędu.
Jest też prostsze i mniej wyszukane rozwiązanie:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
Moje rozwiązanie to: date('Y-m-d', time()-60*60*24*365);
Możesz uczynić go bardziej „czytelnym” za pomocą definicji:
define('ONE_SECOND', 1);
define('ONE_MINUTE', 60 * ONE_SECOND);
define('ONE_HOUR', 60 * ONE_MINUTE);
define('ONE_DAY', 24 * ONE_HOUR);
define('ONE_YEAR', 365 * ONE_DAY);
date('Y-m-d', time()-ONE_YEAR);