Anda lupa memberi tahu tentang kesalahan tersebut.
BalusC
Frank Farmer: Anda begitu yakin? Saya lebih suka menunggu retifikasi / komentar OP.
BalusC
Karena tergesa-gesa saya memposting ini tadi malam, saya lupa menjelaskan - itu mengembalikan tanggal yang salah. Maaf! Terima kasih atas bantuan Anda.
Matt
1
Gunakan seperti ini sebagai gantinya strtotime ('+ 1 year', $ startDate));
casivaagustin
Jawaban:
98
Untuk menambahkan satu tahun ke tanggal hari ini gunakan yang berikut:
Pada PHP 5.1, ketika dipanggil tanpa argumen, mktime () melontarkan pemberitahuan E_STRICT: gunakan fungsi time () sebagai gantinya.
svandragt
Juga tidak disukai di sini. Jumlah detik dalam sehari, hari dalam setahun, detik dalam setahun, dll semuanya bervariasi. Jika Anda tertarik dengan 'satu tahun dari sekarang', Anda harus lulus dalam selang waktu 'satu tahun'. Mengelompokkan sendiri inilah yang menyebabkan kesalahan di sekitar hari kabisat dan detik kabisat serta perubahan penghematan siang hari. Lebih buruk lagi, ini menyebabkan tes unit flappy.
drobert
mengapa jawaban saya ditolak ?? $ addedoneyear = tanggal ("y") + 1; // untuk menambah satu tahun ada apa dengan itu?
Harap dicatat bahwa jika $ startDate sudah menjadi timestamp (seperti yang dibuat sebelumnya dengan fungsi time () atau mktime ()) dan bukan sebuah string, Anda tidak boleh membungkusnya dalam strtotime atau itu tidak akan berfungsi. Sebaliknya, lakukan $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));seperti yang disebutkan K Prime di bawah ini.
Meskipun itu mengembalikan jawaban yang benar, yang lain tidak benar-benar mengembalikan kesalahan ... hanya tanggal yang salah.
SeanJA
1
strtotime tidak membuang kesalahan. Ini mengembalikan false jika terjadi kesalahan.
Frank Farmer
PHP akan memberikan peringatan jika zona waktu default tidak disetel ... meskipun ternyata bukan itu yang dia maksud
SeanJA
Saya mendapatkan kesalahan pada kode Anda saya berubah ,untuk .dan bekerja date("Y-m-d",strtotime('+1 year '.$startDate));
Muhammad Bilal
7
// 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 codeecho"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;
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
strtotime()kembali bool(false), karena tidak dapat mengurai string '+one year'(tidak memahami "satu"). falsekemudian secara implisit dilemparkan ke integerstempel waktu 0. Merupakan ide yang baik untuk memverifikasi strtotime()bahwa keluaran tidak bool(false)sebelum Anda mendorongnya ke fungsi lain.
Ya, poin yang bagus. Kode produksi saya akan memilikinya, tetapi saya merobek rambut saya mencoba untuk membuatnya bekerja, jadi hilangkan kode sesedikit mungkin. Terima kasih!
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."";
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"));
sumber
$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!
sumber
$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));
sumber
,
untuk.
dan bekerjadate("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;
sumber
hanya memiliki masalah yang sama, namun ini adalah solusi paling sederhana:
<?php (date('Y')+1).date('-m-d'); ?>
sumber
$next_year = (date('Y')+1)
.//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 :)
sumber
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.phpJika Anda hanya ingin dari tanggal hari ini maka Anda selalu dapat melakukan:
new \DateTimeImmutable('-1 Month');
sumber
Jika Anda menggunakan PHP 5.3, itu karena Anda perlu menyetel zona waktu default:
sumber
strtotime()
kembalibool(false)
, karena tidak dapat mengurai string'+one year'
(tidak memahami "satu").false
kemudian secara implisit dilemparkan keinteger
stempel waktu0
. Merupakan ide yang baik untuk memverifikasistrtotime()
bahwa keluaran tidakbool(false)
sebelum Anda mendorongnya ke fungsi lain.Dari dokumen:
sumber
Coba ini
$nextyear = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)), date("d",strtotime($startDate)), date("Y",strtotime($startDate))+1));
sumber
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."";
sumber
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);
sumber
Dalam kasus saya (saya ingin menambahkan 3 tahun ke tanggal sekarang) solusinya adalah:
$future_date = date('Y-m-d', strtotime("now + 3 years"));
Kepada Gardenee, Treby dan Daniel Lima: apa yang akan terjadi dengan 29 Februari? Terkadang Februari hanya memiliki 28 hari :)
sumber