【问题标题】:PHP - Count how many days agoPHP - 计算多少天前
【发布时间】:2015-05-24 12:57:12
【问题描述】:

在我的数据库中,我有一堆用户的上次登录日期。它们是这样写的: Last Login: Apr 08 2015, 22:53:49 CEST 和: Last Login: Apr 08 2015, 22:53:49 CET

所以最后的CESTCET 都可以出现。

但是,我想做的是看看这是多少天前(四舍五入)。有什么办法可以用这种格式做到这一点?它必须是这种格式。我想在我的网站上回应以下内容:

Last Login: Apr 08 2015, 22:53:49 CEST (46 days ago)

我找不到这种格式的任何示例。它们中的大多数以毫秒左右为单位。这甚至可能吗?

我只需要日子。小时和分钟并不重要。

基本上是这样的: $date=date('d M Y');

【问题讨论】:

  • 所有条目的格式是否相同,即Last Login: Apr 08 2015, 22:53:49 CEST
  • 是的,或者最后是“CET”。它因人而异。但是数据库中的所有内容都具有相同的格式。我认为第一步是获取“2015 年 4 月 8 日”部分,然后以某种方式进行转换
  • 为你写答案:)
  • 顺便说一下,“上次登录:”不包括在日期中。那只是在我的回声中。在数据库中,日期仅如下所示:Apr 08 2015, 22:53:49 CET

标签: php mysql date time count


【解决方案1】:

第 1 步:

删除日期的最后一部分,即CETCE

$Date = substr($Date, 0, strpos($Date, " "));

最后一个空格后面的字符

第 2 步

找出当前日期和提取日期之间的差异

$interval = $datetime1->diff($datetime2);

这是完整的代码:

<?php
$Date = "Apr 08 2015, 22:53:49 CES";
$Date = substr($Date, 0, strpos($Date, " CE"));
$now  = date('Y-m-d');
$datetime1 = new DateTime($Date);
$datetime2 = new DateTime($now);
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>

如果你想打印不同的消息,如果有 0 天的差异,那么只需检查是否有 0 天的差异并处理它

if ($interval->format('%R%a')=="-0")
{
    echo 'Last Login Today';
}
else
{
    echo $interval->format('%R%a');
}

【讨论】:

  • 行得通!但是如何删除“上次登录:”部分?那只是在我的回声中。实际日期仅为:例如Apr 08 2015, 22:53:49 CET
  • 如果您看到答案,我将删除整个部分,并且只有第一个 :, 之间的内容,即 Apr 08 2015 所以这里 Last Login 被删除。你是说这个还是什么??
  • 在 $Date 中,您写了带有“上次登录:”的字符串,我只想要:$Date = "Apr 08 2015, 22:53:49 CES"
  • 那么,在你的数据库中你将只有这个Apr 08 2015, 22:53:49 CES ?
  • 是的,但我在我的网站上使用“上次登录”来回应它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多