【问题标题】:Get the date if the given is month php如果给定的是月份php,则获取日期
【发布时间】:2019-07-14 22:46:22
【问题描述】:

我不想使用日期选择器,因为我不需要年份,所以我创建了 2 个选择列表,其中我的第一个选择是月份,第二个是天。

一切正常,它会保存在我的数据库中,但这是我的问题。我想显示月份的全名而不是数字。

例子:

Accounting Period

(Month list)   (Day list)
 0-12             1-31

场景:我选择 oct 作为我的月份,5 是我的一天。

value="10" Oct        value="5"   5

查看

Select Month List
    <select name="accounting_period_month">'+
      '<option value="01">January</option>'+
      '<option value="02">February</option>'+
      '<option value="03">March</option>'+
      '<option value="04">April</option>'+
      '<option value="05">May</option>'+
      '<option value="06">June</option>'+
      '<option value="07">July</option>'+
      '<option value="08">August</option>'+
      '<option value="09">September</option>'+
      '<option value="10">October</option>'+
      '<option value="11">November</option>'+
      '<option value="12">December</option>'+
    '</select>

将保存为 10 和 5。

查看月份列表

{{ date('M',strtotime($company_details->accounting_period_month))}}

注意:不要介意 ' +,因为我将它附加到我的 jquery 中。

现在我的问题是如何显示单词 Oct 而不是 10?

【问题讨论】:

  • {{ date('M',strtotime($company_details-&gt;accounting_period_month))}} 行应该给你Oct 而不是 10 那有什么问题?
  • 十月是我的选择列表。
  • 如果您想要返回的只是 oct,为什么首先需要通过 10?...如果您必须将 10 作为月份的数字传递,您可以在后端处理它
  • 创建一个月份数组,将键定义为月份数,将值定义为月份值

标签: php laravel-5.7


【解决方案1】:

这是从给定数字打印月份的多种方法。

1. date() 函数以及参数 'F'

代码示例:

$month_num = 10;
echo date("F", mktime(0, 0, 0, $month_num, 10)); //output: October

2。通过使用 createFromFormat()

创建 php 日期对象

代码示例

$dateObj   = DateTime::createFromFormat('!m', $monthNum);
echo "month name: ".$dateObj->format('F'); // Output: October

3. strtotime() 函数

echo date("F", strtotime('00-'.$monthNum.'-01')); // Output: October

4. mktime() 函数

echo date("F", mktime(null, null, null, $monthNum)); // Output: October

5.通过使用 jdmonthname()

$jd=gregoriantojd($monthNum,10,2019);
echo jdmonthname($jd,0); // Output: Oct

【讨论】:

    【解决方案2】:

    使用Carbon

    {{ Carbon\Carbon::createFromDate(2019,$company_details->accounting_period_month,01)->format('M') }}
    

    【讨论】:

      【解决方案3】:
      $monthNum  = 3;
      $dateObj   = DateTime::createFromFormat('!m', $monthNum);
      $monthName = $dateObj->format('F'); // March
      

      对于旧版本的 PHP

      $monthNum  = 3;
      $monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March
      

      如果您想要仅包含 3 个字母的月份名称示例 Mar,您可以将 F 更改为 M。所有可用格式选项的列表可以在 PHP manual documentation 中找到。

      【讨论】:

      • 我可以知道 10 是多少吗?
      • 这里是文档
      • mktime(时,分,秒,月,日,年,is_dst);
      • 正如我之前建议的,您可以创建数组,但这是 PHP 的预定义函数,您可以通过传递月份编号直接获取月份名称...
      【解决方案4】:

      因为你的问题中有 Laravel 标签:

      $data = YourModel::select('*')
          ->addSelect(DB::raw('MONTHNAME(accounting_period_month) AS month_name')
          ->get();
      
      print_r($data);
      

      见@Karol Samborski 评论,

      我不明白下面的陈述有什么问题

      {{ date('M',strtotime($company_details->accounting_period_month))}}
      

      【讨论】:

        【解决方案5】:

        试试这个代码。

        创建一个数组并定义整个月份。

        这里是javascript代码。

        <script type="text/javascript">
            var i = 10;
            var month = ["jan", "feb", "march", "april", "may", "jun", "july","aug", 
                         "sep","oct","nov","dec"];
            console.log(month[i-1])
        
        </script>
        

        这里是 PHP 的代码

        <?php 
           $i = 10;
           $month = array("jan", "feb", "march", "april", "may", "jun", 
                           "july","aug", "sep","oct","nov","dec");
           echo $month[$i-1];
        ?>
        

        【讨论】:

        • 我用的是jquery/javascript,这部分会在我点击编辑按钮后追加。
        • 但是当您从数据库中检索数据时,您将首先使用 PHP。那时只有您可以使用 PHP 轻松转换为月份名称。将不需要 javascript 或 JQuery...
        • 但是在这里你可以自定义月份的名称
        • 使用已经可用的代码比为它创建自己的代码要好...这就是所谓的代码可重用性...
        • 以 C 程序为例:您有一个名为 factorial() 的方法,它有 10 或 20 行代码。当您想要计算阶乘时,您无需再次编写函数,您可以使用您使用的代码调用该函数,这称为代码可重用性。
        猜你喜欢
        • 1970-01-01
        • 2014-07-09
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多