在PHP中给日期添加前导零

5

我试图在下拉菜单中列出的1到9日期前添加0。这是我的代码,我认为使用"d"会添加前导零,但似乎没有起作用。我没有太多的php经验,所以这是一个冒险...提前感谢您!

<?PHP 

FUNCTION DateSelector($inName, $useDate=0) 
{ 
    /* create array so we can name months */ 
    $monthName = ARRAY(1=> "January", "February", "March", 
        "April", "May", "June", "July", "August", 
        "September", "October", "November", "December"); 

    /* if date invalid or not supplied, use current time */ 
    IF($useDate == 0) 
    { 
        $useDate = TIME(); 
    } 

    /* make month selector */ 
    ECHO "<SELECT NAME=" . $inName . "month>\n"; 
    FOR($currentMonth = 1; $currentMonth <= 12; $currentMonth++) 
    { 
        ECHO "<OPTION VALUE=\""; 
        ECHO INTVAL($currentMonth); 
        ECHO "\""; 
        IF(INTVAL(DATE( "m", $useDate))==$currentMonth) 
        { 
            ECHO " SELECTED"; 
        } 
        ECHO ">" . $monthName[$currentMonth] . "\n"; 
    } 
    ECHO "</SELECT>"; 

    /* make day selector */ 
    ECHO "<SELECT NAME=" . $inName . "day>\n"; 
    FOR($currentDay=1; $currentDay <= 31; $currentDay++) 
    { 
        ECHO "<OPTION VALUE=\"$currentDay\""; 
        IF(INTVAL(DATE( "d", $useDate))==$currentDay) 
        { 
            ECHO " SELECTED"; 
        } 
        ECHO ">$currentDay\n"; 
    } 
    ECHO "</SELECT>"; 

    /* make year selector */ 
    ECHO "<SELECT NAME=" . $inName . "year>\n"; 
    $startYear = DATE( "Y", $useDate); 
    FOR($currentYear = $startYear - 0; $currentYear <= $startYear+2;$currentYear++) 
    { 
        ECHO "<OPTION VALUE=\"$currentYear\""; 
        IF(DATE( "Y", $useDate)==$currentYear) 
        { 
            ECHO " SELECTED"; 
        } 
        ECHO ">$currentYear\n"; 
    } 
    ECHO "</SELECT>"; 

} 
?> 

10
请不要使用大写编码,这样很难阅读。你所有的ECHOFUNCTIONFORIF应分别改为echofunctionforif - user229044
5
啊!那份代码太乱了,我拒绝去读它。 - Galen
1
我同意上面的评论。几年前我们接手这个项目时,重构了整个代码库。 - Nick Pellegrino
5个回答

18

如果我理解你的意思是这样的话,你需要这个:

$day = 1;    
echo str_pad($day, 2, 0, STR_PAD_LEFT);

2

您可以替换:

ECHO INTVAL($currentMonth);

使用:

printf("%02s", $currentMonth);

2
$day_with_leading_zeroes = sprintf("%02d", $day);

0

改为:

ECHO ">$currentDay\n"; 

你可以输入:

echo ">".($currentDay<10 ? "0" : "").$currentDay."\n";

0
$date =4
$month = 6
$year = 2013

如果想要以这种格式显示上述内容。04/06/2013
printf('%02d/%02d/%04d', $date, $month, $year);
$date =14
$month = 12
$year = 2013

如果想以这种格式显示上面的内容。14/12/2013
printf('%02d/%02d/%04d', $date, $month, $year);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接