我在数据库中有一个 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'));
}
Run Code Online (Sandbox Code Playgroud)
例如:-
var_dump(updateDate('8th August 2011'));
Run Code Online (Sandbox Code Playgroud)
在此处查看它的工作并查看 PHP 手册以获取有关 DateTime 类的更多信息。
您没有说明要如何使用更新的日期,但 DateTime 足够灵活,可以让您随心所欲地使用它。我会提请您注意该DateTime::format()方法特别有用。