Saya mencoba mendapatkan tanggal yang satu tahun dari tanggal yang saya tentukan.
Kode saya terlihat seperti ini:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Ini mengembalikan tanggal yang salah. Ada ide mengapa?
Saya mencoba mendapatkan tanggal yang satu tahun dari tanggal yang saya tentukan.
Kode saya terlihat seperti ini:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Ini mengembalikan tanggal yang salah. Ada ide mengapa?
Jawaban:
Untuk menambahkan satu tahun ke tanggal hari ini gunakan yang berikut:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Untuk contoh lain, Anda harus menginisialisasi $ StartingDate dengan nilai timestamp misalnya:
$StartingDate = mktime(); // todays date as a timestamp
Coba ini
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));
atau
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
$futureDate=date('Y-m-d', strtotime('+1 year'));
$ futureDate adalah satu tahun dari sekarang!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$ futureDate adalah satu tahun dari $ startDate!
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
seperti yang disebutkan K Prime di bawah ini.
Mencoba: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
,
untuk .
dan bekerja 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;
//1 year from today's date
echo date('d-m-Y', strtotime('+1 year'));
//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));
semoga sedikit kode yang lebih sederhana ini membantu seseorang di masa depan :)
Saya lebih suka pendekatan OO:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
Gunakan DateTimeImmutable
jika tidak, Anda juga akan mengubah tanggal aslinya! lebih lanjut tentang DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Jika Anda hanya ingin dari tanggal hari ini maka Anda selalu dapat melakukan:
new \DateTimeImmutable('-1 Month');
strtotime()
kembali bool(false)
, karena tidak dapat mengurai string '+one year'
(tidak memahami "satu"). false
kemudian secara implisit dilemparkan ke integer
stempel waktu 0
. Merupakan ide yang baik untuk memverifikasi strtotime()
bahwa keluaran tidak bool(false)
sebelum Anda mendorongnya ke fungsi lain.
Kembalikan Nilai
Mengembalikan stempel waktu kesuksesan, FALSE sebaliknya. Sebelum PHP 5.1.0, fungsi ini akan mengembalikan -1 jika gagal.
Ada juga solusi yang lebih sederhana dan kurang canggih:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
Solusi saya adalah: date('Y-m-d', time()-60*60*24*365);
Anda bisa membuatnya lebih "mudah dibaca" dengan definisi:
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);