PHP如何检查日期之间的日期字符串

时间:2019-01-21 16:34:59

标签: php

我在字符串中有日期。即:18/10/2018

并在对象中添加日期:$ pnrProduct ['Date']。即20/10/2018

我想检查第二个日期是否比第一个日期大(在这种情况下,它更大)

我该怎么做?

3 个答案:

答案 0 :(得分:2)

您需要的是功能strtotime()。它需要一个可日期的字符串,并将其转换为从纪元开始经过的秒数。

简单来说:

if (strtotime(str_replace("/", "-", "18/10/2018")) > strtotime(str_replace("/", "-", "20/10/2018")))
  echo "Greater";
else
  echo "Smaller";

要抬起头来

strtotime("18-10-2018")
int(1539835200)

strtotime("20-10-2018")
int(1540008000)

您可能需要将分隔符替换为:

  通过查看各个组件之间的分隔符,可以消除

m / d / y 或 dmy 格式的日期的歧义:如果分隔符是斜杠( / ),则假定使用美国 m / d / y ;相反,如果分隔符是破折号(-)或点(),则假定使用欧洲 d-m-y 格式。但是,如果以两位数格式给出年份,并且分隔符为破折号(-),则日期字符串将解析为 y-m-d

     

为避免潜在的歧义,最好使用ISO 8601( YYYY-MM-DD )日期或在可能的情况下使用DateTime::createFromFormat()

答案 1 :(得分:0)

您必须使用strtotime将字符串解析为最新的日期

$firstDate = strtotime(str_replace("/", "-", "20/10/2018"));
$secondDate = strtotime(str_replace("/", "-", $pnrProduct['Date']));

if ($firstDate < $secondDate ) { /* do Something */ }

For more informations

答案 2 :(得分:0)

使用简单DateTime类怎么样?

<?php
$datetime1 = DateTime::createFromFormat('d/m/Y','18/10/2018');
$datetime2 = DateTime::createFromFormat('d/m/Y','20/10/2018');

if($datetime1 > $datetime2){
    echo 'datetime1 greater than datetime2';
} else {
    echo 'datetime2 greater than datetime1';
}
?>

演示: https://3v4l.org/5hYBP