【问题标题】:How can I add 'Added Today' or 'Added yesterday' to my newly added records from mysql?如何将“今天添加”或“昨天添加”添加到我从 mysql 新添加的记录中?
【发布时间】:2023-03-22 21:18:01
【问题描述】:

我查看了 PHP 日期手册,但找不到任何有关它的文档。我在荷兰网站http://marktplaats.nl 上找到了它。如果您查看this url,您会看到“Vandaag”这意味着“今天”,他们是如何做到的?

我现在的代码:

<?= date ("d M 'y",strtotime($row['aangeboden-sinds'])); ?>

【问题讨论】:

  • 你能比较文章日期和当前日期吗?
  • 如果你对类似 stackoverflow 的东西感兴趣,还有一个漂亮的 timeago jQuery 插件。 (这也将时间计算转移到客户端,以防止服务器在整个页面中进行日期计算,以及更好的 UI,因为它会自动更新)。
  • 查看我的编辑。我发布了我当前的代码 :) 希望有人可以帮助我如何实现@David 的答案。

标签: php mysql date datetime time


【解决方案1】:

很有可能这是在 SQL 中完成的,而不是在应用程序代码中。以下是在 PostgreSQL 中如何做到这一点。 (查询似乎在 MySQL 5.6 中无需修改就可以工作,这让我有点惊讶。)

create table test (
  test_id integer primary key,
  created_at timestamp not null default current_timestamp
  );

insert into test values 
(1, current_timestamp),
(2, current_timestamp - interval '1' day),
(3, current_timestamp - interval '10' day);

使用 CASE 语句和简单的日期算术几乎可以做任何你想做的事情。

select test_id,
       case current_date - cast(created_at as date)
           when 0 then 'Added today'
           when 1 then 'Added yesterday'
           else 'Added some time ago'
       end as when_added
from test
order by created_at desc, test_id asc

TEST_ID  WHEN_ADDED
--
1        Added today
2        Added yesterday
3        Added some time ago

当您order by created_at desc 时,您的数据自然会按显示顺序返回(不考虑您的应用程序可能需要的任何其他列),而在 php 中您只需要显示“when_added”列。你不需要在php中做任何操作。

【讨论】:

    【解决方案2】:

    这可能只是 UI 逻辑中的一个简单条件。数据库本身只存储发生某事的日期,然后在显示逻辑中它们可能有类似(伪代码):

    if (currentDate - storedDate < 1)
        echo "Today";
    else if (currentDate - storedDate < 2)
        echo "Yesterday";
    else
        echo storedDate;
    

    您可以添加一些额外的逻辑来解释午夜翻转(至少对于特定时区,除非您还拥有用户的时区信息来个性化数学计算)而不是直接的 24 小时比较,但在最后它实际上仍然只是显示逻辑中的一个条件,对于数据的存储方式没有什么特别的。

    【讨论】:

    • 查看我的编辑,我已经添加了我目前拥有的代码,因为我不知道如何使用它。
    • @KeesSonnema:问题中的代码应该成功显示存储的日期,这将是我的伪代码中的最后一个条件。对于前一种情况,您需要将其与当前日期进行比较。您可以在 PHP 中获取两个日期之间的差异:php.net/manual/en/datetime.diff.php
    • 不起作用。它给了Message: Use of undefined constant storedDate - assumed 'storedDate'
    • @KeesSonnema:你只是在复制粘贴我的伪代码吗?它不是那样工作的。我已经演示了逻辑,但这不是实际的 PHP 实现。你明白其中的逻辑吗?
    • 是的,但这就是我添加代码的原因。如何从我的 mysql 中命名currentdate
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2011-04-18
    • 2020-04-04
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多