2014-02-10 7 views
0

У меня есть три части информации, извлеченные из моей базы данных, года, числа недели (1-52) и дня недели (mon, tue, мы б). И мне нужно преобразовать его в дату.Год, количество недель и дней недели на php

Как мне это сделать в php?

+0

А что вы пробовали до сих пор? – Rikesh

+0

Очень близко к дублированию: http://stackoverflow.com/questions/5763340/how-to-convert-week-number-and-year-into-unix-timestamp PHP 'strtotime()' сделает это за вас – jtheman

ответ

0

Это преобразует стоимость $ day в желаемый формат дня. попробовать это

$yr="2011"; 
$week="01"; 
$day="Monday"; 
$day=date("D",strtotime($day)); 
echo date("Y-m-d", strtotime($yr."W".$week."D ".$day));; 

Demo

+0

I попробовал это: и результаты аналогичны: x не так – user2688737

+0

Я тоже проверил после вашей ссылки. Неправильно. Обновите, если найдете soln. – krishna

+0

ОК, большое вам спасибо – user2688737

1

Попробуйте это:

$yr="2014"; 
$week="01"; 
$day = "Mon"; 
echo date("Y-m-d", strtotime($yr."W".$week."D ".$day)); 

PHP скрипку: http://phpfiddle.org/main/code/nzg-ws6

+1

Я пробовал: $ yr = "2014"; $ week = "01"; $ day = 'mon'; echo date ("Y-m-d", strtotime ($ yr. "W". $ Week. "D". $ Day)); и в результате: 2014-01-03 Это не так. Потому что, 2014-01-3 это пятница! – user2688737

1

ли немного покопаться, и это похоже на следующий день нужно будет находиться в цифровом формате для преобразования strtotime для правильной работы. Использование строки, такой как «понедельник», не будет работать.

$yr = "2014"; 
$week = "01"; 
$day = "1"; //Monday 
echo date("Y-m-d", strtotime($yr . "W" . $week . $day)); // "2014W011" 

Обратите внимание, что я не включил префикс «D» в течение дня, как это выглядит следовать ISO8601.

Перестановка ваши дни номерам можно сделать несколькими способами: Вы могли бы сделать массив с понедельника по воскресенье и использовать ключ массива, или, возможно, немного легче вы могли бы сделать что-то вроде этого:

$day date("N", strtotime("Monday")); // will echo 1 

таким образом, полный код может выглядеть примерно так:

$yr = "2014"; 
$week = "01"; 
$day = date("N", strtotime("Monday")); // 
echo date("Y-m-d", strtotime($yr . "W" . $week . $day)); // "2014W011" 

Вот демо, чтобы проверить: http://3v4l.org/EllgQ

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