[英]PHP Convert date to “blank” days/hours/seconds ago
我想将date()转换为年/月/周/日/小时/分钟/秒之前的“”。 我怎么做?
将date('M j, Y')
保存到数据库中时date('M j, Y')
我当前正在使用date('M j, Y')
。 有没有一种更有效的方法来保存我想在上面生产的日期?
(我的网站尚未启用,因此我可以做数据库中需要做的一切,如果需要的话可以编写代码)
您应该始终以MySQL的日期时间格式(YYYY-MM-DD)保存日期。 这使您可以轻松利用MySQL的内置日期功能。 以任何其他格式存储它意味着(可能很多)您想要做更多的工作,然后仅显示这些值即可。
要完成您要使用PHP进行的操作,可以使用DateTime()
(基于此答案 ):
$datetime1 = new DateTime($firstDate);
$datetime2 = new DateTime($secondDate);
$interval = $datetime1->diff($datetime2);
if ($interval->days <= 7)
{
$elapsed = $interval->format('%y years, %m months, %a days, %h hours, %i minutes, %S seconds');
$elapsed = str_replace(array('0 years,', ' 0 months,', ' 0 days,', ' 0 hours,', ' 0 minutes,'), '', $elapsed);
$elapsed = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ', ' 1 hours, ', ' 1 minutes'), array('1 year, ', '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), $elapsed);
echo $elapsed;
}
else
{
echo $firstDate;
}
$datetime1 = new DateTime($firstDate);
$datetime2 = new DateTime($secondDate);
这些行使用各自的日期创建DateTime()
对象。
$interval = $datetime1->diff($datetime2);
这些行从第一个日期减去第二个日期,并将差值作为DateInterval()
对象返回。
if ($interval->days > 7)
此行检查是否在两个日期之间过去了七天或更长时间。 如果是这样,则执行第一个代码块。 如果不是,则打印第一个日期。
$elapsed = $interval->format('%y years, %m months, %a days, %h hours, %i minutes, %S seconds');
$elapsed = str_replace(array('0 years,', ' 0 months,', ' 0 days,', ' 0 hours,', ' 0 minutes,'), '', $elapsed);
$elapsed = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ', ' 1 hours, ', ' 1 minutes'), array('1 year, ', '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), $elapsed);
echo $elapsed;
此代码块仅采用两个日期之间的日期差( DateInterval()
对象)并将其格式化为您要求的格式。 第二行删除没有值的任何时间段(即0个月),并将其从字符串中删除。 第三行采用带有一个值的任何周期(即1个月),并在末尾去除不必要的“ s”(即1个月变为1个月)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.