2012-11-04 3 views
0

매우 이상한 문제가 있습니다.문자열 변환에 대한 PHP 레이싱 조건

코드 조각을 실행할 때 $carDay->date이 개체가 아님을 알리는 오류가 발생합니다. 하지만 디버그 모드로 실행하면 정상적으로 작동합니다. 그래서 나는 그것이 일종의 경주 조건이라고 생각합니다.

$ trip은 ORM 데이터베이스 (MySQL)의 객체이고 getStart->는 "20120929T024754"형식의 시작 날짜를 가져 오는 getter입니다. 그 문자열을 날짜로 변환 한 다음 그 날짜로 물건을합니다. 하지만 디버깅하지 않고 실행하면 날짜에 액세스하려고 할 때 날짜가 변환되지 않는 것 같습니다. 누구든지 아이디어를 가진 사람이 있습니까? 아니면 내가 할 수있는 일이 무엇입니까?

private function calculateIntLate($trip) { 
    $carDay = $trip->getStart(); 
    $carDay_date = $this->convertStringToDateTime($carDay); 

    $carDate = $carDay_date->date; 
    } 

    public function convertStringToDateTime($string) { 
    //
    //20120929T024754 
    $year = substr($string, 0, 4); 
    $month = substr($string, 4, 2); 
    $day = substr($string, 6, 2); 
    $hour = substr($string, 9, 2); 
    $minute = substr($string, 11, 2); 
    $second = substr($string, 13, 2); 
    $dateTime = new \DateTime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second); 
    return $dateTime; 
    } 
+1

'위해서 var_dump ($ carDay)를 사용하지 못할;'그리고 당신의 코드에 따라 문자열이 아닌 객체입니다. – zerkms

+0

공유 데이터가있는 스레드를 사용하고 있습니까? (나는 의도적으로 그렇게하지 않으면 PHP에서 이런 일이 발생할 수 있다고 생각하지 않습니다.) – millimoose

+0

스레드를 사용하고 있지 않습니다. 그것은 이상한 부분입니다. 게으른 로딩을 할 수 있습니까? – Nealv

답변

0

좋아,

내가 대답 here을 발견했다.

는 Aparently 당신은 Datetime-> 날짜 속성

1

당신은 아마이 원하는 :

$carDate = $carDay_date->date; 

하지

$carDate = $carDay->date; 
+0

예, stackoverflow에 불필요한 코드를 제거 할 때 오타가 발생했습니다. – Nealv

+0

@Nealv :'var_dump ($ carDay_date);' – zerkms

+0

+'var_dump ($ year. '-'. $ day. ''. $ hour. ':'. $ 분. ':' . $ second);' – zerkms