【问题标题】:PHP - change an image based on the number of days in a monthPHP - 根据一个月的天数更改图像
【发布时间】:2017-02-16 15:08:28
【问题描述】:

当我单击 Jquery Datepicker 中的日期时,我正在尝试使用 PHP 根据一个月中的天数(28、29、30 或 31)更改不同 DIV 中的图片。

示例...今天是 2017 年 2 月 15 日,所以如果我点击内联日期选择器上的 2017 年 2 月 3 日,DIV 将显示基于 28 天月份的图像,如果我然后点击日期为 2016 年 12 月 22 日,DIV 将显示基于 31 天月份的图像。

【问题讨论】:

  • 在我们指出您做错了什么之前显示您的代码。
  • PHP 不是您想要的。这将在 javascript/jquery 中完成。 PHP是服务器端;本质上它会为您生成 HTML。在页面出现在浏览器中之前发生的任何事情都可以在 PHP 中完成。页面显示后要更改的内容可能应该在 js 中完成。
  • 向我们展示您尝试过的内容...

标签: javascript jquery datepicker


【解决方案1】:

这是您获取特定月份天数的方法。请参阅 working fiddle

var numDays = new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();

Date.prototype.monthDays = function() {
  var d = new Date(this.getFullYear(), this.getMonth() + 1, 0);
  return d.getDate();
}

$(function() {
  var datepicker = $("#datepicker").datepicker({
    onSelect: function(date) {
      var numberOfDays = new Date(date).monthDays();
      var src = '';

      switch (numberOfDays) {
        case 28:
          src = 'http://4vector.com/i/free-vector-28-clip-art_115408_28_clip_art_medium.png';
          break;
        case 30:
          src = 'http://www.clipartkid.com/images/135/30-lessons-learned-in-30-years-a-good-run-Ergij9-clipart.jpg';
          break;
        case 31:
          src = 'https://img.clipartfest.com/fb17991d9c81ea61b1a2950086928603_-vector-number-31-clip-art-number-31-clipart_300-249.png';
          break;
        case 29:
          src = 'http://www.drodd.com/images16/29-14.jpg';
          break;
      }
      $('#img').attr('src', src);
    }
  });
});
#img {
  height: 80px;
  width: 80px;
  border: none;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<p>Date:
  <input type="text" id="datepicker">
</p>
<p>
  <img src="" id="img">
</p>

【讨论】:

    【解决方案2】:

    在 PHP 中,您可以像这样获取本月的天数:

    <?php
    
    $numDays = (int) date('j', strtotime('last day of this month'));
    

    或者如果您使用的是 PHP7,

    <?php
    
    $numDays = (int) (new DateTime("last day of this month"))->format('j')
    

    如果要指定月份和年份,可以在相对日期字符串中使用月份和年份。例如"last day of February 2004" 而不是 "last day of this month"

    详情请参阅Relative Datedate()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多