Я знаю, что это немного устарело, и ответ уже принят, но я хотел указать здесь альтернативный способ сделать это, пытаясь использовать точные форматы, требуемые владельцем вопроса:
// This gets the day of the year number
// given a formatted date string like
// "21 oct 2012"
function getdayoftheyear($dateString) {
date('z', strtotime($dateString));
}
Наоборот:
// This gets the date formatted in $dateFormat way
// like "Y-m-d"
// given the $dayOfTheYear and the $year in numeric form
function getdatefromday($dateFormat, $dayOfTheYear, $year) {
date($dateFormat, mktime(0, 0, 0, 1, ($dayOfTheYear + 1), $year));
}
Эта вторая функция использует функцию mktime (), позволяющую устанавливать любые числа в списке параметров, потому что она управляет переполнением, находя сам правильный месяц.
Поэтому, если вы позвоните в mktime (0, 0, 0, 1, 32, 2015), он на самом деле знает, что 32-й день 1-го месяца - это 1-й день 2-го месяца, и т. Д.