根据日期确定整数值?

时间:2017-03-20 12:51:04

标签: php date

不幸的是,我无法在我的Windows机器/ IIS上设置XDebug以调试我的PHP,因此这使得事情变得非常困难。

无论如何,我正在运行一个phpBB论坛,我正在尝试从包含线程/帖子的CSV文件集合中导入数据。示例文件可能如下所示:

A||N||1||username||Topic Title||||1
Z||000000||username||01-06-2017||03:30 PM||original post body
Z||000001||anotherUsername||01-06-2017||03:42 PM||response post body

注意: MM / DD / YYYY格式,不是DD / MM / YYYY。

我有5个“Active”论坛,然后是5个“Archive”论坛。 根据任何给定线程中发布的最后一条消息的日期,我想将此线程复制到5个Active论坛或5个Archive论坛中的一个。我有这段代码:

//Get file data for specific file
$fileContents = file($filename);

//Then split the data into an array
$explosion = explode("||", $fileContents[$i]);

//some logic to determine $forum_id for which Archive forum to insert the thread into, based on the directory containing $filename.

$postedDate = new DateTime(str_replace("-", "/", $explosion[3]));
$strCutoff = "2015-10-01";
$dtCutoff = strtotime($strCutoff);

//If the post was created before 10/01/15, insert into archive forum.
//This means the current $forum_id determined above is accurate
$isArchiveThread = ($postedDate < $dtCutoff);

//If the post is NOT to be archived (aka, if it is ACTIVE), determine the new $forum_id
if ($isArchiveThread === false)
    $forum_id = $forum_id - 7; //Active ForumID = Archive ForumID minus 7.

$explosion包含来自第一行以外的任何给定行的数据。 $explosion[3]包含日期。

以前的业务逻辑规定任何超过1年的线程都不应该导入。在这种情况下,我将$postedDatedate()进行比较,然后检查两个日期之间的年数。如果它大于或等于1,则跳过插入过程并立即转到新文件。旧的逻辑很好;它只插入了去年我所有文件中创建的线程。但是,自从更新新业务逻辑的代码以来,它的行为不正确。

例如,我上面提供的示例文件正在插入档案论坛,即使它已创建/最近的帖子是 2015/10/01之后。

我确信我必须做一些愚蠢的事情,但是如果没有能够实际执行我的代码,我不确定是什么问题。在我看来,我的最后if声明不能像我期望的那样进行评估。

编辑:添加了以下代码行;

echo $dtCutoff . "<BR>";
echo $isArchiveThread;

在我确定$isArchiveThread的价值之后。

输出我得到了:

  

[phpBB Debug] PHP注意:在第196行的文件[ROOT] /includes/functions_test.php中:类DateTime的对象无法转换为int    1443657600

     

1

它仅重复一次[phpBB Debug] and 144367600 lines **57** times, and then prints the 1`。

我添加了几行,使我的代码只尝试读取前30个文件,这样我才能看到输出...所以如果它只循环30次,我不知道为什么我得到115行输出(57 * 2 + 1)。

1 个答案:

答案 0 :(得分:1)

  • 抓住您的日期,即strtotime($explosion[3])
  • 使用Frame.Navigate(typeof(Page2))
  • 将其转换为时间戳

然后你有一个整数值,你可以用

比较任何东西

或者,如果你像我一样完全懒惰,请使用 Carbon 之类的东西,你可以在那里运行快速约会操作/比较https://github.com/briannesbitt/Carbon