4

我在数据库中有一个 PHP 日期,例如 2011 年 8 月 8 日。我有一个 strtotime() 格式的日期,所以我可以随意显示它。

我需要调整这个日期,使其成为 2013 年 8 月 8 日(当年)。这样做的最佳方法是什么?到目前为止,我一直在绞尽脑汁,但无济于事。

4

5 回答 5

6

到目前为止,您的一些答案错过了您想要将任何给定日期更新为当前年份的点,并专注于将 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()方法特别有用。

于 2013-08-12T10:57:47.340 回答
2
strtotime( date( 'd M ', $originaleDate ) . date( 'Y' ) );

这需要原始时间的日期和月份,加上当前年份,并将其转换为新日期。您还可以添加要添加到原始时间戳的秒数。对于 2 年,这将是 63 113 852 秒。

于 2013-08-11T21:26:01.120 回答
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;
?>
于 2013-08-11T21:27:20.240 回答
1

例如,您可以像这样输出它:

date('2013-m-d', strtotime($myTime))

就这样......或使用

$year = date('Y');
$myMonthDay = date('m-d', strtotime($myTime));

echo $year . '-' . $myMonthDay;
于 2013-08-11T21:27:38.727 回答
1

使用日期修改功能像这样

$date = new DateTime('2011-08-08');

$date->modify('+2 年');

回声 $date->format('Ymd') 。"\n";

//将给出“2013-08-08”

于 2013-08-11T21:29:24.920 回答