【问题标题】:convert month from name to number将月份从名称转换为数字
【发布时间】:2011-03-18 01:08:33
【问题描述】:

有没有一种简单的方法可以将$month = "July"; 更改为$nmonth = 707 也可以)。 我可以做一个案例陈述,但肯定已经有一个函数可以转换吗? 编辑: 我希望我能接受多个答案,因为你们两个基本上给了我结合你们的力量所需要的东西。

$nmonth = date('m',strtotime($month));

这将给出$month 的数值。 谢谢!

【问题讨论】:

    标签: php time


    【解决方案1】:

    试试这个:

    <?php
      $date = date_parse('July');
      var_dump($date['month']);
    ?>
    

    【讨论】:

      【解决方案2】:

      是的,

      $date = 'July 25 2010';
      echo date('d/m/Y', strtotime($date));
      

      m 将月份格式化为那里的数字表示形式。

      【讨论】:

        【解决方案3】:

        看这里很有意思,kelly给出的代码效果很好,

        $nmonth = date("m", strtotime($month));
        

        但是对于 2 月份,当当前日期是闰年的 30 或 31 以及非闰年的 29、30、31 时,它不会按预期工作。它将返回 3 作为月份编号。例如:

        $nmonth = date("m", strtotime("february"));
        

        解决方案是,像这样添加年份和月份:

        $nmonth = date("m", strtotime("february-2012"));
        

        我从 php 手册中的 comment 得到这个。

        【讨论】:

          【解决方案4】:
          $string = "July";
          echo $month_number = date("n",strtotime($string));
          

          返回 '7' [月份数]

          使用date("m",strtotime($string)); 输出“08”

          更多格式请参考这里..
          http://php.net/manual/en/function.date.php

          【讨论】:

            【解决方案5】:

            你也可以使用这个:

            $month = $monthname = date("M", strtotime($month));
            

            【讨论】:

              【解决方案6】:
              $nmonth = date("m", strtotime($month));
              

              【讨论】:

              • 我测试了这个解决方案,在某些情况下它返回错误的数字,例如'5' 代表'四月'。有人知道为什么吗?稍后我会仔细研究它。
              • @longeasy 你的月和年都过了吗,看看下面我的回答。
              【解决方案7】:
              $monthname = date("F", strtotime($month));
              

              F 表示月份全名

              【讨论】:

                【解决方案8】:
                <?php
                $monthNum = 5;
                $monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
                echo $monthName; //output: May
                ?>
                

                【讨论】:

                  【解决方案9】:

                  如果你想要字符串名称中的月份数,那么

                  $month = 'August';
                  $year = 2019;
                  echo date('m',strtotime($month.' '.$year));
                  

                  给 08

                  或者如果你想要月份的全名,那么

                  echo date('F')
                  

                  或者如果你想要月份的半个名字,那么

                  echo date('M')
                  

                  【讨论】:

                    【解决方案10】:

                    创建一个假日期可能是最简单的方法,这样您就可以使用日期功能。

                    这里的优秀参考:http://php.net/manual/en/function.date.php

                    例子:

                    <?
                    $month = 7;
                    
                    $tempDate = mktime(0, 0, 0, $month, 1, 1900); 
                    
                    echo date("m",$tempDate);
                    
                    
                    ?>
                    

                    【讨论】:

                      【解决方案11】:

                      上面的答案很好。这是另一种方法:-

                      function getMonthNumber($monthStr) {
                      //e.g, $month='Jan' or 'January' or 'JAN' or 'JANUARY' or 'january' or 'jan'
                      $m = ucfirst(strtolower(trim($monthStr)));
                      switch ($m) {
                          case "January":        
                          case "Jan":
                              $m = "01";
                              break;
                          case "February":
                          case "Feb":
                              $m = "02";
                              break;
                          case "March":
                          case "Mar":
                              $m = "03";
                              break;
                          case "April":
                          case "Apr":
                              $m = "04";
                              break;
                          case "May":
                              $m = "05";
                              break;
                          case "June":
                          case "Jun":
                              $m = "06";
                              break;
                          case "July":        
                          case "Jul":
                              $m = "07";
                              break;
                          case "August":
                          case "Aug":
                              $m = "08";
                              break;
                          case "September":
                          case "Sep":
                              $m = "09";
                              break;
                          case "October":
                          case "Oct":
                              $m = "10";
                              break;
                          case "November":
                          case "Nov":
                              $m = "11";
                              break;
                          case "December":
                          case "Dec":
                              $m = "12";
                              break;
                          default:
                              $m = false;
                              break;
                      }
                      return $m;
                      }
                      

                      【讨论】:

                      • 二月,而不是“二月”
                      【解决方案12】:

                      也许可以与strtotime()date() 结合使用?

                      【讨论】:

                        【解决方案13】:

                        使用

                        date("F", mktime(0, 0, 0, ($month)));
                        
                        where, $month value will be 1 -> 12
                        

                        【讨论】:

                          【解决方案14】:
                          $date = 'Dec 25 2099';
                          echo date('d/m/Y', strtotime($date));
                          

                          这返回01/01/1970,这意味着php不支持所有日期,它返回正确的格式化日期直到Jan 19 2038Jan 20 2038返回01/01/1970

                          【讨论】:

                            【解决方案15】:
                            $dt = '2017-Jan-10';
                                     OR
                            $dt = '2017-January-10';
                            

                            回显日期('Y-m-d', strtotime($dt));

                            回显日期('Y/m/d', strtotime($dt));

                            【讨论】:

                              【解决方案16】:

                              使用 PHP 5.4,您可以将 Matthew 的答案变成一条线:

                              $date = sprintf('%d-%d-01', $year, date_parse('may')['month']);
                              

                              【讨论】:

                                【解决方案17】:

                                我知道这似乎是一个简单的解决方案,但为什么不直接使用这样的方法

                                <select name="month">
                                  <option value="01">January</option>
                                  <option value="02">February</option>
                                  <option selected value="03">March</option>
                                </select>
                                

                                用户看到了二月,但是02发布到了数据库中

                                【讨论】:

                                  猜你喜欢
                                  • 1970-01-01
                                  • 2012-08-07
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2011-06-04
                                  相关资源
                                  最近更新 更多