Как отобразить день года в трехзначном формате, чтобы 1 января было не «1», а «001»?
Мне любопытно, реализована ли такая функция (что-то вроде date ('zzz')) или нет, поэтому мне нужно поработать над date ('z') и проверить, не меньше ли она 100, 10?
strtotime использование не рекомендуется. Это должно работать:
strtotime
echo sprintf('%03d', date('z'));
function pad_date($date) { return str_pad(date('z', $date), 3, '0', STR_PAD_LEFT); }
Лучше принять время UNIX в функции, как указано выше, и использовать функцию str_pad
str_pad
Если такой функции нет, мой подход к таким числовым дополнениям обычно заключается в следующем:
$three_digit_day_num_string = substr('000' . date('z', $timestamp), -3);
function pad_date($date) { $mydate = date('z', $date); return str_repeat("0", 3-strlen($mydate) ).$mydate; } echo pad_date(time())."\n"; // today echo pad_date(time() - (100 * 24 * 60 * 60))."\n"; // 100 days ago echo pad_date(time() - (200 * 24 * 60 * 60))."\n"; // 200 days ago echo pad_date(time() - (300 * 24 * 60 * 60))."\n"; // 300 days ago echo pad_date(time() - (335 * 24 * 60 * 60))."\n"; // 335 days ago