Tôi có một ngày trong PHP ở dạng 2013-01-22
và tôi muốn lấy ngày mai ở cùng một định dạng, chẳng hạn 2013-01-23
.
Làm thế nào điều này có thể thực hiện được với PHP?
Câu trả lời:
Sử dụng DateTime
$datetime = new DateTime('tomorrow');
echo $datetime->format('Y-m-d H:i:s');
Hoặc là:
$datetime = new DateTime('2013-01-22');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');
Hoặc là:
$datetime = new DateTime('2013-01-22');
$datetime->add(new DateInterval("P1D"));
echo $datetime->format('Y-m-d H:i:s');
Hoặc trong PHP 5.4+:
echo (new DateTime('2013-01-22'))->add(new DateInterval("P1D"))
->format('Y-m-d H:i:s');
$tomorrow = date("Y-m-d", strtotime('tomorrow'));
hoặc là
$tomorrow = date("Y-m-d", strtotime("+1 day"));
Liên kết trợ giúp: STRTOTIME ()
Vì bạn đã gắn thẻ cái này với strtotime, bạn có thể sử dụng nó với công cụ +1 day
sửa đổi như sau:
$tomorrow_timestamp = strtotime('+1 day', strtotime('2013-01-22'));
Điều đó nói rằng, đó là một giải pháp tốt hơn nhiều để sử dụng DateTime .
<? 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)));
Sử dụng DateTime
:
Để có được ngày mai từ bây giờ:
$d = new DateTime('+1day');
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;
Kết quả: 28/06/2017 08.13.20
Để có được ngày mai từ một ngày:
$d = new DateTime('2017/06/10 08.16.35 +1day')
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;
Kết quả: 11/06/2017 08.16.35
Hy vọng nó giúp!
/**
* 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);
}
Thật kỳ lạ, có vẻ như nó hoạt động hoàn toàn tốt: date_create( '2016-02-01 + 1 day' );
echo date_create( $your_date . ' + 1 day' )->format( 'Y-m-d' );
Hãy làm nó
Đầu tiên, việc đưa ra những tóm tắt chính xác luôn là chìa khóa. chìa khóa cho khả năng đọc, khả năng bảo trì và khả năng mở rộng.
Ở đây, ứng cử viên khá rõ ràng là một ISO8601DateTime
. Có ít nhất hai cách triển khai: lần đầu tiên là ngày giờ được phân tích cú pháp từ một chuỗi và lần triển khai thứ hai là ngày mai. Do đó, có hai lớp có thể được sử dụng và sự kết hợp của chúng dẫn đến (gần như) kết quả mong muốn:
new Tomorrow(new FromISO8601('2013-01-22'));
Cả hai đối tượng đều là ngày giờ ISO8601, vì vậy biểu diễn văn bản của chúng không phải là chính xác những gì bạn cần. Vì vậy, bước cuối cùng là làm cho chúng có dạng ngày tháng:
new Date(
new Tomorrow(
new FromISO8601('2013-01-22')
)
);
Vì bạn cần một biểu diễn dạng văn bản, không chỉ một đối tượng, bạn gọi một value()
phương thức.
Để biết thêm về cách tiếp cận này, hãy xem bài đăng này .
đây là chức năng làm việc
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);
Trong đó 86400 là # giây trong một ngày.