Şeklinde bir PHP tarihim var 2013-01-22
ve yarın tarihini aynı biçimde almak istiyorum, örneğin 2013-01-23
.
Bu PHP ile nasıl mümkün olabilir?
Yanıtlar:
DateTime kullanın
$datetime = new DateTime('tomorrow');
echo $datetime->format('Y-m-d H:i:s');
Veya:
$datetime = new DateTime('2013-01-22');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');
Veya:
$datetime = new DateTime('2013-01-22');
$datetime->add(new DateInterval("P1D"));
echo $datetime->format('Y-m-d H:i:s');
Veya PHP 5.4+ sürümlerinde:
echo (new DateTime('2013-01-22'))->add(new DateInterval("P1D"))
->format('Y-m-d H:i:s');
$tomorrow = date("Y-m-d", strtotime('tomorrow'));
veya
$tomorrow = date("Y-m-d", strtotime("+1 day"));
Yardım Bağlantısı: STRTOTIME ()
Bunu ile etiketlediğinden beri strtotime, bunu +1 day
değiştirici ile şu şekilde kullanabilirsiniz :
$tomorrow_timestamp = strtotime('+1 day', strtotime('2013-01-22'));
Bununla birlikte, DateTime'ı kullanmak çok daha iyi bir çözüm .
<? php
//1 Day = 24*60*60 = 86400
echo date("d-m-Y", time()+86400);
?>
echo date ('Y-m-d',strtotime('+1 day', strtotime($your_date)));
Kullanım DateTime
:
Yarını bugünden almak için:
$d = new DateTime('+1day');
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;
Sonuçlar: 28/06/2017 08.13.20
Bir tarihten yarını almak için:
$d = new DateTime('2017/06/10 08.16.35 +1day')
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;
Sonuçlar: 11/06/2017 08.16.35
Umarım yardımcı olur!
/**
* get tomorrow's date in the format requested, default to Y-m-d for MySQL (e.g. 2013-01-04)
*
* @param string
*
* @return string
*/
public static function getTomorrowsDate($format = 'Y-m-d')
{
$date = new DateTime();
$date->add(DateInterval::createFromDateString('tomorrow'));
return $date->format($format);
}
Garip derken mükemmel çalışıyor gibi görünebilir: date_create( '2016-02-01 + 1 day' );
echo date_create( $your_date . ' + 1 day' )->format( 'Y-m-d' );
Yapmalı
Birincisi, doğru soyutlamalar bulmak her zaman bir anahtardır. okunabilirlik, sürdürülebilirlik ve genişletilebilirliğin anahtarı.
Burada oldukça açık bir aday bir ISO8601DateTime
. En az iki uygulama vardır: ilki bir dizeden ayrıştırılmış bir tarih saattir ve ikincisi yarın. Dolayısıyla, kullanılabilecek iki sınıf vardır ve bunların kombinasyonları (neredeyse) istenen sonucu verir:
new Tomorrow(new FromISO8601('2013-01-22'));
Her iki nesne de bir ISO8601 tarih saatidir, bu nedenle metinsel gösterimleri tam olarak ihtiyacınız olan şey değildir. Yani son vuruş, onları bir tarih formu almalarını sağlamaktır:
new Date(
new Tomorrow(
new FromISO8601('2013-01-22')
)
);
Yalnızca bir nesneye değil, metinsel bir temsile ihtiyacınız olduğundan, bir value()
yöntemi çağırırsınız .
Bu yaklaşım hakkında daha fazla bilgi için bir göz atın bu yazı .
işte çalışma fonksiyonu
function plus_one_day($date){
$date2 = formatDate4db($date);
$date1 = str_replace('-', '/', $date2);
$tomorrow = date('Y-m-d',strtotime($date1 . "+1 days"));
return $tomorrow; }
$date = '2013-01-22';
$time = strtotime($date) + 86400;
echo date('Y-m-d', $time);
86400, bir günde saniye sayısıdır.