【问题标题】:php check expire date if older than user expire date postbone to user expire datephp 检查过期日期,如果早于用户过期日期 postbone 到用户过期日期
【发布时间】:2014-08-19 22:51:06
【问题描述】:

我创建一些东西给用户提交一个帖子,它有一个不显示的过期日期, 如果用户在系统中仍然有效,我会覆盖过期日期, 如果用户的日期大于帖子过期日期和今天的日期,则让帖子处于活动状态,

在这里,我将用户过期日期设置为将来,但我尝试了较早的时间,都返回给我 这个post have time to expire 在这一点上我卡住并感到困惑,如果有错误的错字,我很抱歉。 谢谢你

注意
谢谢你所有这些代码都在工作

  $links_user = 'testuser';
  $d_vexpdate = new DateTime('2014-09-05');// user valid until date
  $d_postexp = new DateTime('2014-08-20');// post expire date 2 weeks later
  $d_postpub = new DateTime('2014-08-06');// post submit date
  $d_today = new DateTime();
  $d_old = new DateTime('-14 day');

if ($d_vexpdate > $d_today && $d_postexp < $d_today){
        echo "<br> post expire is great than today :)<br>";
      }

   }else {
    echo "hello expired - ".$links_user;

    }

【问题讨论】:

  • $today 来自哪里,或者这只是一个例子?
  • 哎呀,我完全忘了放在这里+我很困惑
  • TBH Sara,我很难使用“时间相关”的代码,并且刚刚花了 2 天的大部分时间试图弄清楚一些事情,这与您想要做的事情相似。这个页面帮助了我很多highlystructured.com/comparing_dates_php.html - 我很清楚你的感受,我也很困惑;到了一定程度,哈哈
  • fred 有用户过期日期,女巫必须覆盖过期日期,今天才有效,我无法弄清楚如何:(
  • 我今天刚刚解决了我的问题,TBH,毕竟我的头完全是糊状的。请查看我给您的链接并从那里获取;这是我能做的最好的了。

标签: php validation date


【解决方案1】:

strtotime('-14 days') 包括当前时间,因此也包括时间戳,例如2014-08-06 00:01:15 其中strtotime('2014-08-06') 将时间值保留为零,因为它们未指定,即 2014-08-06 00:00:00 的时间戳,因此小于到期时间戳,导致第一个条件为真。

尝试使用内置的 DateTime 类来帮助解决这个问题:

//...
$d_postpub = DateTime::createFromFormat('Y-m-d H:i:s', '2014-08-06 00:00:00');
$cutoff = new DateTime('-14 days'); $cutoff->setTime(0,0,0);
if($d_postpub<$cutoff){
//...

【讨论】:

  • 嗨,谢谢您的回复,但是 $d_vexpdate 在哪里,它必须覆盖 $cutoff 所以如果 14 天过期可以在 $d_vexpdate 日期之前有效,直到 $d_vexpdate 小于今天-谢谢
  • 您可以像 $d_postpub 一样定义您需要的其他日期。创建 DateTime 对象时,可以使用任何对 strtotime 有效的字符串。 $today 可以更简单地创建,因为 new DateTime() 默认为当前日期和时间。
  • tankyou kami 'new DateTime' 是我无法验证日期的答案,也感谢 fred。 @fred-ii
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 1970-01-01
  • 2011-08-01
  • 2015-01-04
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
相关资源
最近更新 更多