2012-10-11 2 views
25

내가 가진 한 경우 $dateYYYY-mm-dd하고 싶어 특정 $day (6 (토요일 0 (일요일)에 의해 지정)) YYYY-mm-dd가에있는 주. 예를 들어PHP를 사용하여 요일을 찾는 방법?

, 내가 같이 2012-10-11을 가지고있는 경우의
당신의 대부분은 그것을 오해 : 편집 0

2012-10-14, $day으로 내가 가진 한 경우 $day$date5, 나는 2012-10-12을 싶어. 나는 몇 가지 일을 가지고, $date$date가에있는 같은 주의 0-6에 의해 지정된 하루 싶어.

그래서 아니, 당신은 할 수

+0

언제부터 시작됩니까? 월요일이나 일요일? 나는 대부분의 사람들에게 월요일이라고 알고 있지만, 단지 확신하고있다 : p – keyser

+6

RTFM http://php.net/manual/en/function.date.php – VDP

+3

나는 대답 한 사람들이 질문을 제대로 이해했다고 생각하지 않는다. 그는 날짜별로 날짜 ('w')를 얻고 싶지 않지만 날짜와 요일을 지정하고 지정된 날짜와 같은 주에 해당하는 날짜를 받고 싶습니다. – Vafliik

답변

50

나는 이것이 당신이 원하는 것이라고 생각합니다.

$dayofweek = date('w', strtotime($date)); 
$result = date('Y-m-d', strtotime(($day - $dayofweek).' day', strtotime($date))); 
+1

완벽하게 쉬운 해결책입니다. 감사 – Zulakis

38

... $date의 날 싶지 않아 하루 NR :

를 얻을 수

date('w'); // day of week 

또는

date('l'); // dayname 

예 기능 : 날짜() 함수를 사용하여

function getWeekday($date) { 
    return date('w', strtotime($date)); 
} 

echo getWeekday('2012-10-11'); // returns 4 
-1

PHP 매뉴얼은 말했다 :

요일의 숫자 표현 w

당신은 그러므로한다 mktime와 데이트를 구성하고,이 date("w", $yourTime);

+0

당신은 내 질문을 오해했습니다. 위의 편집을 참조하십시오. – Zulakis

0

I에서 사용할 수있는 너는 수동으로해야만 할까 봐 걱정된다. 날짜의 현재 요일을 가져 와서 오프셋을 계산하고 날짜에 오프셋을 추가하십시오.

$current = date("w", $date) 
$offset = $day - $current 
$new_date = new DateTime($date) 
    ->add(
     new DateInterval($offset."D") 
    )->format('Y-m-d') 
+1

접근 해 주셔서 감사합니다. 아니요, 수동으로하지 않아도됩니다. Rezigned의 대답을 살펴보십시오. – Zulakis

6

그냥

$date = '2012-10-11'; 
$day = 1; 
$days = array('Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday','Friday', 'Saturday'); 
echo date('Y-m-d', strtotime($days[$day], strtotime($date))); 
+1

좋은 접근 방식이지만 Rezigned의 대답에서 볼 수 있듯이 '일일'을 사용하여 $ days 배열을 쓸모 없게 만들 수도 있습니다. – Zulakis

2

보십시오 : $ 일

<?php 
$day=5; 
$w  = date("w", strtotime("2011-01-11")) + 1; // you must add 1 to for Sunday 

echo $w; 

$sunday = date("Y-m-d", strtotime("2011-01-11")-strtotime("+$w day")); 

$result = date("Y-m-d", strtotime($sunday)+strtotime("+$day day")); 

echo $result; 

?> 

은 $ 결과

$ 날짜와 2012년 10월 11일 5 = '2012-10- 12 '는 당신이 원하는 것입니다.

관련 문제