【问题标题】:PHP SimpleXML startdate in given date range给定日期范围内的 PHP SimpleXML 开始日期
【发布时间】:2013-08-14 21:39:14
【问题描述】:

我在从 XML 文件中获取所有事件时遇到问题,该文件的开始日期在给定日期范围之间。

我的 XML 文件如下所示:

    <events>
    <event_data>
        <id>1</id>
        <startdate realdate="2013-08-06">1375740000</startdate>
        <enddate realdate="2013-08-13">1376344800</enddate>
    </event_data>

    <event_data>
        <id>2</id>
        <startdate realdate="2013-08-10">1376085600</startdate>
        <enddate realdate="2013-08-17">1376690400</enddate>
    <event_data>

    <event_data>
        <id>3</id>
        <startdate realdate="2013-08-17">1376690400</startdate>
        <enddate realdate="2013-08-24">1377295200</enddate>
    </event_data>

    <event_data>
        <id>4</id>
        <startdate realdate="2013-08-24">1377295200</startdate>
        <enddate realdate="2013-09-07">1378504800</enddate>
    <event_data>

    <event_data>
        <id>5</id>
        <startdate realdate="2013-08-25">1377381600</startdate>
        <enddate realdate="2013-09-08">1378591200</enddate>
    </event_data>

    <event_data>
        <id>6</id>
        <startdate realdate="2013-09-15">1379196000</startdate>
        <enddate realdate="2013-09-23">1379887200</enddate>
    <event_data>

    <event_data>
        <id>7</id>
        <startdate realdate="2013-10-26">1382738400</startdate>
            <enddate realdate="2013-11-02">1383346800</enddate>
    </event_data>

    <event_data>
        <id>8</id>
        <startdate realdate="2013-11-10">1384038000</startdate>
        <enddate realdate="2013-11-15">1384470000</enddate>
    <event_data>

    <event_data>
        <id>9</id>
        <startdate realdate="2014-01-11">1389394800</startdate>
        <enddate realdate="2014-01-18">1389999600</enddate>
    </event_data>

    <event_data>
        <id>10</id>
        <startdate realdate="2014-01-19">1390086000</startdate>
        <enddate realdate="2014-01-24">1390518000</enddate>
    <event_data>
</events>

我的 PHP 代码是这样的:

<form action="" method="post">
    <div id="slider-range"></div>
    <input type="text" name="startdate" style="margin:40px 0 0">
    <input type="text" name="enddate" style="margin:40px 0 0">

    <input type="submit" name="submitClub" value="Submit" />
</form>

<?php

?>

<div id="eventList">
<?php 

    $sxe = simplexml_load_file('events.xml');  

    if($sxe) {  
        if(isset($_POST['submitClub'])) {

            $varStart = $_POST['startdate'];
            $varEnd = $_POST['enddate'];

            if($varStart){

                $start = strtotime($varStart);
                $end = strtotime($varEnd);

                $xpath = sprintf(
                    '//event_data[
                    (%1$d >= startdate and %2$d <= enddate)
                or
                (%1$d <= enddate and %2$d >= startdate)
                    ]',
                    strtotime($varStart),
                    strtotime($varEnd)
                );

                foreach($sxe->xpath($xpath) as $event){
                    echo $event->id, PHP_EOL . '<br>';
                }                   
            }               

        } else {
            echo 'Keine Events';
        }
    } else {
        echo '<p>Die Datei konnte nicht geöffnet werden</p>';
    } 
?>
</div>

有了这个,我得到了在给定日期范围内开始和结束的所有日期,但我只想显示在给定日期范围内开始的所有事件。

假设我想显示从 2013 年 8 月 12 日到 2013 年 8 月 24 日之间开始的所有事件,那么应该显示这些事件:

3
4

如果日期范围介于 2013 年 9 月 15 日和 2013 年 11 月 10 日之间,则应显示这些事件

6
7
8

感谢您的帮助:)

已编辑: 现在可以了。换个方式

(%1$d >= startdate and %2$d <= enddate)
or
(%1$d <= enddate and %2$d >= startdate)

(%1$d <= startdate and %2$d >= startdate)

【问题讨论】:

  • @Passerby 对不起我的错误。我的意思是 3,我编辑了我的文字。
  • 由于还没有人提供该解决方案,因此可以提供您的解决方案作为答案并接受它。如果您认为该问题对未来的访问者没有任何价值,您也可以将其删除。

标签: php xml echo date-range


【解决方案1】:

我找到了解决上述问题的方法。我刚换了

(%1$d >= startdate and %2$d <= enddate) or (%1$d <= enddate and %2$d
>= startdate)

(%1$d <= startdate and %2$d >= startdate)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2019-02-25
    相关资源
    最近更新 更多