我在数据库中有一个 PHP 日期,例如 2011 年 8 月 8 日。我有一个 strtotime() 格式的日期,所以我可以随意显示它。
我需要调整这个日期,使其成为 2013 年 8 月 8 日(当年)。这样做的最佳方法是什么?到目前为止,我一直在绞尽脑汁,但无济于事。
到目前为止,您的一些答案错过了您想要将任何给定日期更新为当前年份的点,并专注于将 2011 年变为 2013 年,不包括已接受的答案。但是,我觉得使用 DateTime 类的示例在这些情况下总是有用的。
接受的答案将导致通知:-
注意:遇到格式不正确的数值......
如果您提供的日期是闰年的 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'));
在此处查看它的工作情况并查看 PHP 手册以获取有关 DateTime 类的更多信息。
你没有说你想如何使用更新的日期,但 DateTime 足够灵活,可以让你随心所欲地使用它。我会提请您注意该DateTime::format()
方法特别有用。
strtotime( date( 'd M ', $originaleDate ) . date( 'Y' ) );
这需要原始时间的日期和月份,加上当前年份,并将其转换为新日期。您还可以添加要添加到原始时间戳的秒数。对于 2 年,这将是 63 113 852 秒。
您可以在两年后使用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;
?>
例如,您可以像这样输出它:
date('2013-m-d', strtotime($myTime))
就这样......或使用
$year = date('Y');
$myMonthDay = date('m-d', strtotime($myTime));
echo $year . '-' . $myMonthDay;
使用日期修改功能像这样
$date = new DateTime('2011-08-08'); $date->modify('+2 年'); 回声 $date->format('Ymd') 。"\n"; //将给出“2013-08-08”