2012-04-22 70 views
0

我想在单个数字前添加0。在日期前添加0的错误

for($i_y=1950; $i<=2012; $i++) $years[]=$i_y; 
for($i_m=1; $i<=12; $i++) $months[]=$i_m; 
for($i_d=1; $i<=31; $i++) $days[]=$i_d; 

试图

for($i_y=1950; $i<=2012; $i++) $years[]=$i_y; 
for($i_m=01; $i<=12; $i++) $months[]=$i_m; 
for($i_d=01; $i<=31; $i++) $days[]=$i_d; 

它不是那么简单,什么正确的方法是什么?

它是一个选择的选项

for($i=1; $i<=50; $i++) 
$months=$i; 

echo '<select name="month" select id="month">'; 
echo '<option value="">' . __("0") . '</option>'; 
foreach($months as $month){ 
$selected = ''; 
echo '<option value="' . $month . '" ' . $selected . '>' . $month . '</option>'; 
        } 
echo '</select>'; 
+1

无法真正零填充实际数值。你需要这样做吗? – 2012-04-22 18:47:59

+0

@TiesonT。是的,他们是选择框的选项,它需要保存的格式是2012年4月22日。它不可能是2012-4-22 – Craig 2012-04-22 18:53:40

+0

您可以将您存储在数组中的'数字'零填充,但要将其用作'for'循环中的迭代器,它必须是一个数字。使用@ kuba的方法如下:'$ months [] = str_pad($ i_m,2,'0',STR_PAD_LEFT);' – 2012-04-22 18:57:53

回答

5

使用str_pad

$x = "1"; 
echo $x; // will output "1" 
$y = str_pad($x, 2, "0", STR_PAD_LEFT); 
echo $y; // will output "01" 
+0

感谢您的快速响应,我使用了一个选项,我会在哪里实现? – Craig 2012-04-22 18:49:10

+0

告诉我你如何生成选项,我们会告诉你 – kuba 2012-04-22 18:52:31

+0

我更新了问题以显示它;不过@Tieson T已经向我展示了如何。感谢您的回答! – Craig 2012-04-22 19:03:43

0

如果你想格式化像 '2012-04-01' 日期你可以用sprintf()来做到这一点:

$formatted_date = sprintf("%04d-%02d-%02d", $year, $month, $day);