【问题标题】:How can I compare the date from text file to today's date如何将文本文件中的日期与今天的日期进行比较
【发布时间】:2018-01-19 23:43:51
【问题描述】:
<?php
$myFile = strtolower('date.txt');
$lines = file($myFile);     
$expire_date = $lines[0];



$date = strtotime($expire_date);
//$date->format("y,m,d");
$now = new DateTime();
$now->format("y,m,d");

if($now < $date) {
    echo 'Have not reached date yet.';
}else{
echo 'Date in file is old';
}
?>

我的 date.txt 文件的内容 -

2018,2,18(这是第1行)

测试(这是我文件中的第 2 行)

我想将文件中的 2018,2,18 第 1 行与当前日期进行比较。代码一直说日期是旧的,而它显然是在未来。是因为第 1 行虽然会返回日期,但实际上是数组还是不是日期?

【问题讨论】:

  • 你检查过$date的样子吗?
  • 我回显了 $date,它似乎是空白的。我认为 strtotime 应该将我的字符串转换为时间?除非我的 $expire_date 不被视为字符串?
  • 或者它不是函数可以理解的字符串... ;) $date 实际上是一个布尔值 false: php.net/manual/en/function.strtotime.php

标签: php date comparison


【解决方案1】:

您的strtotime($expire_date) 正在返回FALSE。我已将您的日期字符串中的逗号替换为破折号。还要考虑我正在使用返回当前 Unix 时间戳的 time() 函数。我认为您文件中的日期是 UTC 日期。

$myFile = strtolower('date.txt');
$lines = file($myFile);     
$date = $lines[0];
$date = str_replace(',', '-', $date);
$date = strtotime($date);

if(time() < $date) {
    echo 'Have not reached date yet.';
}else{
    echo 'Date in file is old';
}

或者您也可以根据文件中的格式创建日期:

$myFile = strtolower('date.txt');
$lines = file($myFile);     
$date = $lines[0];
$date = date_create_from_format('Y,m,d', $date);
$date = date_format($date, 'Y-m-d');
$date = strtotime($date);

if(time() < $date) {
    echo 'Have not reached date yet.';
}else{
    echo 'Date in file is old';
}

【讨论】:

  • 当我尝试这段代码时,它告诉我日期已经过时了。但是,我文件中的日期是 2018 年 2 月 20 日。哪个是未来
  • 我看不到你的代码了?当然,我总是可以改变我的答案,我很感激任何帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多