2016-05-26 4 views
2

В настоящее время я борюсь со следующим: мне нужно получить дату, как "Sun, 29.05.2016 18:00", но все, что у меня есть, это номер недели с начала года, номер дня недели и часа дня.php: Caluclate Date from Week of Year and Week of Week

Week: 21 
Day: 7 
Hour: 18 

Теперь мой вопрос: как получить фактическую дату и время с помощью функций даты или времени php или собственного кода?

+0

вы можете попробовать 'setISODate' –

ответ

2

Вы ищете DateTime::setISODate

$week_no = 21; 
$day =7; 
$hour = 18; 

$d= new DateTime(); 
$d->setISODate(date('Y'),$week_no, $day); 
$d->setTime ($hour,0); 
echo $d->format('D, d.m.Y H:i'); 
+0

Это работало просто отлично. Большое спасибо. Я не знал, что есть что-то вроде «setISODate». Ты спас мой день! – ZeroTek

0

Довольно просто с объектами DateTime:

$week = 21; 
$day = 7; 
$hour = 18; 

$dateFormat = sprintf('%d-W%02d-%d', (new DateTime())->format('Y'), $week, $day); 

$x = new DateTime($dateFormat); 
$x->setTime($hour, 0); 
echo $x->format('Y-m-d H:i:s'); 

(если предположить, что в текущем году)

0

Попробуйте с setISODate и DateTime. Online Check

Установка 2016 из вашего желания и использование часа непосредственно в формате.

$gendate = new DateTime(); 
$gendate->setISODate(2016, 21, 7); //year , week num , day 
echo $gendate->format('D, d.m.Y 18:00'); //Sun, 29.05.2016 18:00