我在数据库中有一个PHP日期,例如2011年8月8日。我有一个strtotime()格式的日期,所以我可以随意显示它。
我需要调整此日期以使其成为2013年8月8日(本年度)。这样做的最佳方式是什么?到目前为止,我一直绞尽脑汁但无济于事。
答案 0 :(得分:3)
到目前为止,您所获得的一些答案已经错过了您希望将任何给定日期更新到当前年份并且集中于将2011年变为2013年的问题,不包括已接受的答案。但是,我觉得使用DateTime类的示例在这些情况下总是有用。
接受的答案将产生通知: -
注意:遇到一个非常好的数值......
如果您提供的日期是Leapyear的2月29日,尽管它仍然应该给出正确的结果。
这是一个通用函数,它将采用任何有效日期并返回当前年份的相同日期: -
/**
* @param String $dateString
* @return DateTime
*/
function updateDate($dateString){
$suppliedDate = new \DateTime($dateString);
$currentYear = (int)(new \DateTime())->format('Y');
return (new \DateTime())->setDate($currentYear, (int)$suppliedDate->format('m'), (int)$suppliedDate->format('d'));
}
例如: -
var_dump(updateDate('8th August 2011'));
See it working here,请参阅more information on the DateTime classes的PHP手册。
您没有说明如何使用更新日期,但DateTime足够灵活,可以让您根据需要使用它。我会提请你注意DateTime::format()
方法特别有用。
答案 1 :(得分:1)
strtotime( date( 'd M ', $originaleDate ) . date( 'Y' ) );
这需要原始时间的日期和月份,添加当前年份,并将其转换为新日期。 您还可以添加要添加到原始时间戳的秒数。 2年这将是63 113 852秒。
答案 2 :(得分:1)
您可以使用strtotime()第一个参数检索两年后同一日期的时间戳,然后将其转换为您想要显示的格式。
<?php
$date = "11/08/2011";
$time = strtotime($date);
$time_future = strtotime("+2 years", $time);
$future = date("d/m/Y", $time_future);
echo "NEW DATE : " . $future;
?>
答案 3 :(得分:1)
您可以输出如下:
date('2013-m-d', strtotime($myTime))
就像那样......或者使用
$year = date('Y');
$myMonthDay = date('m-d', strtotime($myTime));
echo $year . '-' . $myMonthDay;
答案 4 :(得分:1)
使用date modify function赞这个
$date = new DateTime('2011-08-08'); $date->modify('+2 years'); echo $date->format('Y-m-d') . "\n"; //will give "2013-08-08"