2015-04-21 3 views
2

мне нужно преобразовать число в дату т.е.Преобразование числа в День недели

1 -> Sunday 
2 -> Monday 

У меня есть следующий вопрос, который помогает с противоположным: day of the week to day number (Monday = 1, Tuesday = 2)

После того, как я могу сделать это я может, например, через петлю и эхо день, а именно:

while($i < 7) 
{ 
    echo date("N",strtotime(1)); 
} 

Все, что я ищу, кажется, люди просят, чтобы превратить день в номер. Может кто-то указать мне в правильном направлении.

ответ

6

Просто поместите дни в массив, используя день недели в качестве ключа. Затем используйте date('N'), чтобы получить день недели и использовать это, когда они имеют ключ для доступа к этому значению массива.

$days = [ 
    1 => 'Sunday', 
    2 => 'Monday', 
    3 => 'Tuesday', 
    4 => 'Wednesday', 
    5 => 'Thursday', 
    6 => 'Friday', 
    7 => 'Saturday' 
]; 

echo $days[date('N')]; 
+0

Большого спасибо за ваш ответ. Я видел подобное, и надеялся, что мне не удастся создать массив, поскольку я, скорее всего, буду использовать его несколько раз, поэтому я могу создать метод для его возвращения. Из интереса был еще один ответ, который с тех пор был удален. '$ dow_text = date ('D', strtotime (" Sunday + {$ dow_numeric} days "));' Интересно, было ли у вас какое-либо мнение по этому методу, я прошу только потому, что это более короткий путь, хотя и несколько строк , –

+0

На самом деле я нашел следующую ссылку: http://forums.phpfreaks.com/topic/131031-return-day-of-week-from-integer-in-php/. Это описывает оба метода и состояния, метод, показанный выше в вашем ответе, намного быстрее, поскольку функции 'date' и' strtotime' могут быть довольно медленными. –

+0

Это вызывает проблему, если день 1 не воскресенье ... попробуйте это ... :) –

0

Вам просто нужно создать массив, чтобы сделать это, пожалуйста, проверьте следующее:

$dayOfWeek = array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); 
echo $dayOfWeek[2]."<br />"; 
echo $dayOfWeek[8%7]; 
echo $dayOfWeek[date('N')]; 

Почему я пишу массив, как это? индекс 0 => "Sunday" and 1 => "Monday" ....? Потому что, если это день, вы должны это сделать, 1 week is 7 day, так что остальное вы можете использовать "Modulo/%(in php)" для его преобразования.

Например: Если дата 1 марта 2015 - воскресенье, значит, 8-й день должен быть в понедельник because 8 mod 7 is 1 or 8%7 (in php) is 1. Итак, чтобы преобразовать это, вы просто делаете это $dayOfWeek[8%7], чтобы получить dayOfWeek. :)

Для другого условного случая вам нужна ваша логика для этого. Если день 1 мая 2015 года - пятница. Просто имейте в виду, чтобы проверить год, который должен был знать, день февраля составляет 28 или 29.

Как проверить? Пожалуйста, попробуйте следующее:

$year = 2015; 
$feb = (($year%100)and !($year%4)or !($year%400))+28; 
echo $feb; 

день в году должен нравится:

$month= array(0,31,$feb,31,30,31,30,31,31,30,31,30,31); 

0=0, 1=January,2=February,.... 

Надеется, что это поможет вам .. :)

Смежные вопросы