PHP date()를 사용하여 함수에서 YYYY-MM-YY를 "2011년 1월 1일"로 변환하는 방법

StackOverflow https://stackoverflow.com//questions/9618964

문제

다음을 사용하여 날짜(2011-01-05에서 2011년 1월 5일)를 변환할 수 있습니다.

<?php   
$whatever = get_post_meta($post->ID, start_date, true);
$nice_date = date("d F Y", strtotime($whatever));
echo $nice_date;
?>

그러나 나는 그것을 다른 곳에서 사용할 수 있도록 함수에 구현하고 싶습니다.

<?php   

function newDate($whatever) {
$nice_date = date("d F Y", strtotime($whatever));
return $nice_date; }

$crap_date = get_post_meta($post->ID, start_date, true);
echo newDate($crap_date);

?>

함수는 while 루프(WordPress) 안에 있습니다. 첫 번째 날짜의 형식이 올바르게 지정되고 있습니다., 그러나 두 번째에는 다음과 같은 오류 메시지가 나타납니다.

치명적 오류:newDate()를 다시 선언할 수 없습니다(이전에 ..

이 작업을 어떻게 수행할 수 있으며 왜 그런 일이 발생합니까? 감사해요.

도움이 되었습니까?

해결책

함수 정의 자체를 루프 안에 넣었습니다.예를 들어:

while ($someCondition) {

  function newDate () {

    // Function code

  }

  // Loop code

}

이는 루프를 반복할 때마다 함수를 다시 선언하려고 시도하며, 이로 인해 표시되는 오류가 발생합니다.

함수 정의를 if:

while ($someCondition) {

  if (!function_exists('newDate')) {
    function newDate () { 

      // Function code

    }
  }

  // Loop code

}

또는 (더 나은) 루프 전에 함수를 선언합니다.

function newDate () { 

  // Function code

}

while ($someCondition) {

  // Loop code

}

편집하다 아래의 의견에 이어 해당 코드를 다시 작성하여 다음을 사용하는 방법은 다음과 같습니다. DateTime 물체:

function format_date ($dateStr, $formatStr = 'd F Y') {
  $date = new DateTime($dateStr);
  return $date->format($formatStr);
}

$crap_date = get_post_meta($post->ID, 'start_date', true);
echo format_date($crap_date);

이 함수는 분석할 수 있는 모든 날짜 형식의 문자열을 허용합니다. DateTime 객체를 첫 번째 인수로 사용합니다(내 생각에는 객체와 동일한 내부 메커니즘을 사용하는 것 같습니다). strtotime()).선택적 두 번째 인수는 첫 번째 인수와 동일한 형식 문자열입니다. date() function - 생략되면 기본값 d F Y 사용하게 될 것이다.

OOP 질문과 관련하여:

Is this approach better? - 그것은 매우 의견의 문제입니다.여기 댓글에 보니 DateTime 물건이 물건보다 낫다 strtotime()/date() 접근 방식과 그 반대의 경우도 마찬가지지만 실제로는 자신이 가장 잘 이해하는 접근 방식, 주어진 상황에 가장 적합한 접근 방식, 자신과 다른 개발자가 코드를 가장 쉽게 읽을 수 있게 만드는 접근 방식을 사용해야 한다는 것입니다. 함께 일하고 있을 수도 있습니다.나는 한 쪽이 다른 쪽보다 확실히 더 낫다는 설득력 있는 주장을 본 적이 없습니다.위의 루틴에서는 큰 차이가 없다고 생각합니다.

How could I rewrite my function in that format? - 위 참조.

Is DateTime the object and format the method to change a property? - DateTime 의 이름이다 수업.위의 예제 코드에서는 $date 변수는 물체, 이는 사례 ~의 DateTime 수업.그리고 그렇습니다. format 의 이름이다 방법.

Would this help me understand OO better if I will try and write all the code in this approach, where possible? - OOP는 절차적 코드를 작성하는 것과는 다른 사고방식이 필요하며, 익히기가 쉽지 않습니다.OOP를 이해하는 데 도움이 되는 수많은 리소스가 있으므로 여기서는 다루지 않겠습니다. Google 시작하는 곳이 될 것입니다.제가 말씀드리고 싶은 한 가지는 OOP를 이해하려면 PHP에서 시작해서는 안 된다는 것입니다.PHP는 ~ 아니다 OO 언어, OO 지원을 제공하는 스크립팅 언어입니다.다른 사람들은 동의하지 않을 수도 있지만 OO에서 생각하는 방법을 배우기 위해 Java의 방향을 알려드리고 싶습니다.

다른 팁

루프 전에 기능을 선언해야합니다. 먼저 NewDate라는 함수를 선언 한 다음 언제 어디서나 사용할 수 있습니다. 그러나 동일한 이름의 함수를 다시 선언 할 수는 없으며 (루프 내부에 function newDate(..){....}를 작성할 때 일어나는 일이 발생합니다.

function newDate($whatever) {
$nice_date = date("d F Y", strtotime($whatever));
return $nice_date; }

$crap_date = get_post_meta($post->ID, start_date, true);
echo newDate($crap_date);

//Here goes the loop
while( $i < 100)
{
  //do something with the newDate function
}
.

이 WHILL 루프 안에 선언 된 기능입니까?그렇다면 각 루프 반복마다 한 번 선언되며 함수 만 한 번만 선언 할 수 있으므로 설명하는 오류가 발생합니다.

이 경우 루프 외부의 기능을 선언 할 수 있습니다 (다른 도우미 기능이있는 다른 파일에서 아마도 다른 파일)에서 루프 내부에서 호출하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top