在PHP中用两位数和月份名称显示月份

use*_*736 4 html php

我有一个循环以表格形式显示月份。

我想以两种不同的格式显示月份

  1. 用这样的两位数字01,02,03 ...
  2. 使用这样的纯文本一月,二月 ...

像这样:

<option value="01">January</option>
<!-- ... -->
<option value="12">December</option>
Run Code Online (Sandbox Code Playgroud)

问题是,我无法显示此内容。

到目前为止,这是我的代码:

echo '<select name="month">';

for ($x=1; $x<=12; $x++)
{
    $val=strlen($x);

    if($val==1)
    {
        echo '<option value="'.'0'.$x.'">'.'0'.$x.'</option>';
    } else {
        echo '<option value="'.$x.'">'.$x.'</option>';
}
}

echo '</select>';
Run Code Online (Sandbox Code Playgroud)

Jiv*_*van 5

输出两位数的月份

您有两个主要选择:

  1. str_pad()- 在此处查看PHP文档
  2. sprintf()- 在那里查看PHP文档

假设$x您的数字月份(1、2、3 ...),则可以这样使用两个:

// with str_pad()
$month = str_pad($x, 2, "0", STR_PAD_LEFT);

// with sprintf()
$month = sprintf('%02d', $x);
Run Code Online (Sandbox Code Playgroud)

将月份输出为名称

对于文字月份部分,您可以使用DateTime类(请参阅PHP doc)。

$date = DateTime::createFromFormat('!m', $x);
$monthName = $date->format('F');
Run Code Online (Sandbox Code Playgroud)

两者一起奔跑

在您的情况下,str_pad()如下所示:

for ($x = 1; $x <= 12; $x++)
{
    $month = str_pad($x, 2, "0", STR_PAD_LEFT);

    $date = DateTime::createFromFormat('!m', $x);
    $monthName = $date->format('F');

    echo '<option value="'.$month.'">'.$monthName.'</option>';
}
Run Code Online (Sandbox Code Playgroud)