【问题标题】:How to compare dates in PHP如何在 PHP 中比较日期
【发布时间】:2011-08-24 22:02:18
【问题描述】:

我正在设置最近的活动功能,从中获取本周的所有用户活动。但是我不知道如何获取本周的所有活动,因为我需要比较现在和前一周之间的日期。请你能告诉我我该怎么做吗?我正在使用 MySQL 数据库来保存所有信息。我有表格、喜欢、关注、cmets 和帖子。我显然需要比较日期以从所有表格中获取所有信息。

我在我的 MySQL 数据库中插入日期时使用此方法。

function uk_date() {
        $sign = "-"; 
        $h = "0"; 
        $dst = "true"; 
        if ($dst) {
            $daylight_saving = date('I');
            if ($daylight_saving){
               if ($sign == "-"){ $h=$h-1;  }
               else { $h=$h+1; }
          }
        }
        $hm = $h * 60;
        $ms = $hm * 60;
        if ($sign == "-"){ $timestamp = time()-($ms); }
        else { $timestamp = time()+($ms); }
        return $gmdate = gmdate("d/m/Y g:i:s A", $timestamp);
    }

另外,我的数据库中的“日期”字段不是时间戳,它是从上面的 uk_date() 方法生成的字符串。这是我不确定如何比较日期的地方。

【问题讨论】:

  • 你看过strtotime函数吗?

标签: php mysql compare date


【解决方案1】:
select * from table where datetime_field > now() - interval 7 day

【讨论】:

  • 该字段不是时间戳,它是由 uk_date() 方法生成的字符串。
  • 但建议是 - 这不应该是任何“生成”的日期。尽可能将纯数据存储在数据库中,如果谈论日期,最简单的总是 unix 时间戳,因为它是由世界上大多数 API 原生处理的......(好吧,我知道我们可以讨论这个事实,但这不是重点)
  • @XcodeDev;是的,但在我看来他做的事情太复杂了。
  • 我承认我有。那么如何比较生成的日期字符串呢?
【解决方案2】:

不完全明白,为什么需要这么复杂,为什么要使用夏令时等等...

是否有可能,您只需将调用 time() 的结果存储到数据库中?然后您将拥有 unix-timestamp,这很容易与任何其他所需的 unix 时间戳进行比较。那么所有的算术都是微不足道的......我是对的吗?

【讨论】:

  • +1 用于在数据库中使用 UNIX 而不是 GMT。它更轻(在性能方面),也更容易使用。
  • 对不起,我不能同意。存储任何“d/m/Y g:i:s A”都是麻烦的牺牲品。真的,这没有给你带来任何好处,也没有给你带来很多坏处——但当然这是我个人的看法。不要存储任何“生成”的日期。
  • 好吧,我已经把它们存起来了。请告诉我如何比较生成的日期?
  • 请理解您的问题只是因为日期存储不正确......所以为什么不使用一些简单的转换脚本一次将所有日期转换为时间戳,并阻止“转换疯狂”升级未来?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多