【问题标题】:how is the best method create simply calendar?最好的方法是如何简单地创建日历?
【发布时间】:2012-01-14 02:35:34
【问题描述】:

最好的方法是如何简单地创建日历?

我在 db 中有例如:

id | date(unique)| text
1  | 2011-02-02  | aaa
2  | 2011-03-03  | bbb
3  | 2011-03-04  | ccc
..
10 | 2011-03-11  | dfg

例如现在是 2011-03-04。我想从数据库中获取-2 和 +4 天: 02、03、04、05、06、07、08。

在我制作的 php 中:

$now = strtotime("现在"); 并剪切这个 substr(0, 10)。

但我如何检查 -2 和 +4 天。在这个例子中,这很简单,但如果是 2011-11-30 和 +4days,这是新的月份。我想自动做这个。有可能吗?

【问题讨论】:

    标签: php mysql sql date strtotime


    【解决方案1】:
    select * 
    from table 
    where `date` 
    between curdate() - interval 2 day and curdate() + interval 4 day
    

    PHP版本

    $past = date('Y-m-d', strtotime('-2 days'));
    $future = date('Y-m-d', strtotime('+4 days'));
    

    【讨论】:

      【解决方案2】:

      使用mktime。所以当前日期是,即2011-03-04:

      $date = explode('-', '2011-03-04');
      $d = $date[2] - 2;
      
      do
      {
          echo date('Y-m-d', mktime(0, 0, 0, $date[1], $d, $date[0]) . '<br />';
          $d++;
      } while($d < ($date[2] + 4));
      

      应该有帮助!!剩下的就看你了;)

      【讨论】:

      • @Flukey 我没有告诉他如何做一个完整的日历,只是回答了这部分`我想从数据库中获取-2和+4天:02、03、04、05, 06, 07, 08` .. 它有效!
      • 如果当天是 01,然后减去两天呢?你会得到-1!它从根本上是有缺陷的。
      • @Flukey 你在说什么?请以day=1 的任何日期运行此代码,然后告诉我是否有缺陷。
      • 确实如此。但请尝试将日期设置为 2011-04-01。输出:2011-03-30 2011-03-31 2011-04-01 2011-04-02 2011-04-03 2011-04-04。如您所见,代码有问题。有非常好的功能可以实现这一点(正如我在上面发布的那样)。您发布的代码效率低下且丑陋。
      • @Flukey 不是他想要的?? (...)but what if it is 2011-11-30 and +4days this is new month. i would like make this automatically 一个月过去了。我已经在网站上完成了代码并没有测试,当然很丑,但至少是我的;)
      【解决方案3】:

      使用 PHPs(>=5.3) 新 DateTime class:

      例如,将您要执行的日期添加 4 天:

      $date = new DateTime('2011-11-30');
      $date->add(new DateInterval('P4D'));
      echo $date->format('Y-m-d');
      

      要减去四天,您可以使用:

      $date->sub(new DateInterval('P4D'));
      

      比strtotime、mktime等好多了。

      利用新功能:-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多