Tôi đang cố gắng có được một ngày là một năm kể từ ngày tôi chỉ định.
Mã của tôi trông như thế này:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Nó trả lại sai ngày. Bất kỳ ý tưởng tại sao?
Tôi đang cố gắng có được một ngày là một năm kể từ ngày tôi chỉ định.
Mã của tôi trông như thế này:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Nó trả lại sai ngày. Bất kỳ ý tưởng tại sao?
Câu trả lời:
Để thêm một năm vào ngày thường, hãy sử dụng như sau:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Đối với các ví dụ khác, bạn phải khởi tạo $ StartDate với giá trị dấu thời gian, ví dụ:
$StartingDate = mktime(); // todays date as a timestamp
Thử đi
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));
hoặc là
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
$futureDate=date('Y-m-d', strtotime('+1 year'));
$ futureDate là một năm kể từ bây giờ!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$ futureDate là một năm kể từ $ startDate!
$futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
như K Prime đã đề cập bên dưới.
Thử: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
,
thành .
và nó hoạt động 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'));
hy vọng đoạn mã đơn giản hơn này sẽ giúp ai đó trong tương lai :)
Tôi thích cách tiếp cận OO hơn:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
Sử dụng DateTimeImmutable
nếu không, bạn cũng sẽ sửa đổi ngày ban đầu! thêm về DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Nếu bạn chỉ muốn từ ngày thường thì bạn luôn có thể làm:
new \DateTimeImmutable('-1 Month');
strtotime()
đang trả về bool(false)
, vì nó không thể phân tích cú pháp chuỗi '+one year'
(nó không hiểu "một"). false
sau đó sẽ được truyền ngầm đến integer
dấu thời gian 0
. Bạn nên xác minh strtotime()
đầu ra của nó bool(false)
trước khi chuyển nó vào các chức năng khác.
Giá trị trả lại
Trả về dấu thời gian khi thành công, ngược lại là FALSE. Trước PHP 5.1.0, hàm này sẽ trả về -1 khi bị lỗi.
Ngoài ra còn có một giải pháp đơn giản và ít phức tạp hơn:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
Giải pháp của tôi là: date('Y-m-d', time()-60*60*24*365);
Bạn có thể làm cho nó "dễ đọc" hơn với các định nghĩa:
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);