2012-02-10 3 views
2

저는 (작업)으로 작업하는 사용자 정의 게시 시간에 대해 간단한 "XX 일 남음"을 얻으려고합니다. 나는 어디에서나 답을 찾으려고 노력했지만 아무 것도 잘 적응하지 못하고 인터넷에서 예제를 따라 1000 번 내 코드를 변경했지만 해결할 수 없었다.PHP/Wordpress에서 날짜가 남은 일

내 코드는 다음과 같습니다 : $에

<?php 
$today = date('d/m/Y'); 
$today = strtotime($today); 
$finish = get_field('todate'); 
$finish = strtotime($finish); 
//diference 
$diff = $finish - $today; 
$daysleft=floor($diff/(60*60*24)); 
echo "$daysleft days left"; 
?> 

는 get_field ('TODATE') 나에게하시기 바랍니다 도울 수있는 날짜 일/월/년

누구나 반환을 완료?

감사합니다.

+1

당신은'$ today = time()'을하고 무의미한 "유닉스 타임 스탬프를 받아서 문자열로 포맷 한 다음 코드의 2 라인 이전의 유닉스 타임 스탬프로 다시 파싱"할 수있다. –

+0

@dqhendricks $ daysleft를 울리는 아이디어는 종료일까지 며칠 남았는지 보여주는 것입니다. $ 오늘은 오늘 시간을 얻고 마무리는 그들을 끝내 준다. strtotime은 차이를 만드는 숫자를 가졌다. 나는 dd/mm/yyyy가 지원되지 않았다는 것을 몰랐다. – Jaypee

+0

@dqhendricks이 문제를 해결할 수 있었고 코드가 99 % 정확했으며 유럽 날짜 (dd/mm)에서 작동하지 않는 미국식 (mm/dd) 날짜를 수정해야했습니다. 답변 1에있는 사람이 문제를 해결하는 데 도움이되었습니다. 나는 같은 필드의 값을 표시하고 싶기 때문에 이것을 싫어하지만 날짜 형식이 잘못 될 수는 없으므로 사용자에게 2 개의 입력이 있어야합니다. (게시 완료 날짜와 종료 날짜는 유럽 ​​형식) 도움을 주셔서 감사합니다. – Jaypee

답변

4

문제는 $ today 및 $ finish 변수에서 d/m/Y (m/d/Y 여야 함) 배열입니다 (strtotime과 함께 작동하는 유효한 날짜 형식 목록은 PHP Date Format을 방문하십시오. 페이지) :

<?php  
    $today = date('m/d/Y'); 
    $today = strtotime($today); 
    $finish = get_field('todate'); 
    $finish = strtotime($finish); 
    //difference 
    $diff = $finish - $today; 

    $daysleft=floor($diff/(60*60*24)); 
    echo "$daysleft days left"; 
?> 

는 $ 마감 날짜를 가정, 테스트 및 작품/월/일으로 입력 (안 D/m/년) 어떻게이 기능에 대한

+0

이 골짜기를 확인해 보았는데, 우리 나라에서는 날짜가 그렇게 설정되어 있고 그 필드 값을 다른 장소에 표시했기 때문에 dd/mm/yyyy를 사용하고있었습니다. 이것이 내가 dd/mm/yyyy를 유지하기를 원했던 것입니다. 시도 할 것입니다. 이걸로 알려 줘서 고마워 !!! – Jaypee

+0

고마워요. 당신이 주석을 쓰는 동안 그걸 알아 냈습니다. 그래서 strtotime에서 작동하는 날짜 형식에 대한 PHP 문서 참조를 추가했습니다. 사용자를 위해 가장 적합한 형식을 확인하십시오. –

+0

30-6-2008을 날짜 형식으로 사용해 볼 수도 있습니다 ([PHP Date Format Documentation] (http://www.php.net/manual/en/datetime.formats.date.php)에서) –

0

로?

function DayDifference($start, $end) { 
    $start = strtotime($start); 
    $end = strtotime($end); 
    $difference = $end - $start; 
    return round($difference/86400); 
} 
echo DayDifference("2012-02-10", "2012-02-20").' days left'; 
1

strtotime은 값이 점, 탭 또는 대시로 구분되는 경우 일 - 월 - 연도 형식으로 날짜를 구문 분석합니다. Date Formats을 참조하십시오. 계정 DST에이 소요

<?php 

$today = date('m/d/Y'); 
$today = new DateTime($today); 

$finish = get_field('todate'); // MAKE SURE THIS IS m/d/Y or Y/m/d 
$finish = new DateTime($finish); 

//diference 
$diff = $finish->diff($today); 
$daysleft = $diff->format('%a'); // %a modifier means total days 

echo "$daysleft days left\n"; 

및 년을 도약 : 당신이 PHP 5.2 이상이있는 경우

, 당신은 전체 일을 얻기 위해 다음과 같은 기능을 사용할 수 있습니다.

+0

PHP 5.3.8을 사용하고 있지만이 코드 결과는 치명적인 오류가됩니다. – Jaypee

+0

치명적인 오류는 무엇입니까? – drew010

+0

감사 드류, 나는 날짜 형식을 미국 날짜 형식으로 변경하여이 문제를 해결했습니다. 지금은 효과가 있습니다. – Jaypee