【问题标题】:Comparing two datetime objects in symfony比较 symfony 中的两个日期时间对象
【发布时间】:2019-08-29 23:06:36
【问题描述】:

我有两个日期时间对象通过构造方法存储在我的数据库中: 应用\实体\令牌

    public function __construct()
{
    $this->creation = new \DateTime("now");
    $this->valid = (new \DateTime("now"))->modify('+1 day');
}

当我尝试将这些对象与我的 datetimenow 进行比较时,结果不符合预期,尝试了许多不同的情况,露营 或使用两个日期之间的差异。我应该使用一些特别的东西吗?: 示例:

    $datenow = new \DateTime("now");
    if ( $datenow < $creation && $datenow > $valid ) {
} else{result_always_here}

可能与格式有关,或者我必须使用教义来比较它?

谢谢。

亲切的问候。

【问题讨论】:

  • 根据您的示例代码,您的 $datenow 值 (18:14:26) 比您的创建属性 (17:56:23) 更新
  • 日期永远不能早于某个日期在同一日期+1天之后...
  • 我通过我的对象获得了一个示例日期时间: $creation = $pledge->getCreation(); $valid = $pledge->getValid();它在构造函数构建它时返回日期和日期+1。但是在比较这些日期时间时并不重要,因为正如我所说,我通过学说检索这些数据作为任何其他对象。我试图比较一个日期是否在两个日期之间,在这里我只需要比较一个日期时间是大于有效时间,所以 $datenow > $valid 按预期工作,虽然我不知道为什么不能比较 datetime 是否在其他两个日期之间。我猜我做错了什么。干杯。
  • Symfony 以什么方式改变行为?请提取minimal reproducible example 以确定它是否与您的问题真正相关。

标签: php symfony


【解决方案1】:

我不完全确定我是否正确理解了这种情况,但如果您尝试检查某个日期是否介于其他两个日期之间,那么示例中的代码应如下所示:

if ($datenow > $creation && $datenow < $valid ) {
    // Code here should be executed
} else{
    // result_always_here is no more
}

因此,可以按照您的意愿比较DateTime 对象,也可以检查日期是否在其他两个日期之间,只是您的比较运算符是相反的。

【讨论】:

    猜你喜欢
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多