Добавить ведущие нули к числу или к дате довольно часто встречаемая задача.
Также нередко люди даже не знают как это правильно называется: говорят как ноль в начале или ноль спереди. На английском это называется leading zero.
Ведущие нули для чисел
str_pad
Есть замечательная функция str_pad(), и одной из областей ее применения является подстановка ведущих нулей к числу.
1 2 3 4 | <?php $number = '1'; echo str_pad($number, 5, '0', STR_PAD_LEFT); // "00001" |
Все просто, но если что непонятно, то можете почитать документацию по ссылке вверху.
printf и sprintf
Можно использовать sprintf для этих целей, например так:
1 2 3 | <?php echo sprintf('%05d', 1); // "00001" |
Ведущие нули для дат
str_pad
Если нужно добавить ведущий ноль к дню или месяцу, который по какой-то причине оказался в переменной, то можем использовать функцию str_pad
1 2 3 4 5 | <?php $number = '1'; echo str_pad($number, 2, '0', STR_PAD_LEFT); // "01" ?> |
date для даты в формате unix
Если дата в формате unix и будем использовать функцию date то укажем нужные модификаторы:
1 2 3 | <?php echo date('d.m.Y'); //01.01.2019 |
Нужными тут являются d и m: день и месяц с ведущими нолями
PHP DateTime
Тут все точно также как и в случае с date (модификаторы то ведь одинаковые)
1 2 3 | <?php $d = new DateTime(); echo $d->format("d.m.Y"); |
Спасибо, очень помогла Ваша статья.
Спасибо
Спасибо большое! Долго бился с этим, все пытался числа в строки переводить, и потом обратно, не получалось, а тут оказывается просто все)
А я всегда в датах делал
for($i=1; $i<32,$i++)
{
if($i < 10) { $i = '0'.$i; }
}
Придумал за 20 секунд года з назад, до сих под не задумывался о лучшем 🙂 Автору спс!
Hi
«Если Вы, как и все здоровые люди храните даты в форматы unix» — здоровые люди хранят дату в БД как дату, для этого и есть спец тип MySQL date. Хотя, конечно, в некоторых случаях можно и как timestamp. А за пример спасибо — он выдается первым при поиске в Гугле по «ведущие нули php».
Илья, тебе в статье попытались объяснить уже, ненавязчиво попытались. Нормальные люди хранят даты в таймштампе, а те кто особо мозг не включает, использует поле date и другие.
Оригинальное решение. А как записать в БД значение с нулями впереди? У меня нули обрезает.
Чтоб нули попали в БД, необходимо поле делать varchar либо char по количеству символов в передаваемом номере.