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 DateTimeImmutableprzeciwnym 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”). falsejest następnie niejawnie rzutowany na integerznacznik 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);