在PHP中显示带有两位数和月份名称的月份

时间:2014-02-04 00:27:55

标签: php html

我有一个循环来显示表单中的月份。

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

  1. 两位数,如下所示: 01,02,03 ......
  2. 使用纯文字 1月,2月 ......
  3. 就像这样:

    <option value="01">January</option>
    <!-- ... -->
    <option value="12">December</option>
    

    问题是,我无法显示这一点。

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

    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>';
    

2 个答案:

答案 0 :(得分:5)

以两位数输出月份

您有两个主要选择:

  1. str_pad() - 请参阅PHP documentation here
  2. sprintf() - 请参阅PHP documentation there
  3. 你会使用这两个,假设$x是你的数字月(1,2,3 ......):

    // with str_pad()
    $month = str_pad($x, 2, "0", STR_PAD_LEFT);
    
    // with sprintf()
    $month = sprintf('%02d', $x);
    

    输出月份作为名称

    对于文字月份部分,您可以使用DateTime班级(see PHP doc)。

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

    两人一起跑

    在您的情况下,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>';
    }
    

答案 1 :(得分:1)

使用str_pad()mktime()可以执行此操作

for ($x = 1; $x <= 12; $x++) {
    $monthNum = str_pad($x, 2, "0", STR_PAD_LEFT);
    $monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
    echo '<option value='.$monthNum.'">'.$monthName.'</option>';
}