2011-12-28 5 views
0

다음과 같은 문제가 있습니다. TV 쇼의 Airdate를 가져와 내 데이터베이스에 저장하기 전에 스크립트를 수정합니다. 로컬로 내 로컬 호스트에서 완벽하게 작동하지만, 온라인으로 시도하고 내 웹 서버에 업로드했을 때 다른 동작을 보여줍니다. 왜 그런지 모르겠다. 내가 할다른 PHP 스크립트 동작이 온라인


데이터 : 여기

은 몇 가지 예입니다

1/22/12 방영 내 스크립트의 결과는해야하는 것 : 2012-01-22

무엇 나는 온라인으로 얻을 : 2022/12--


데이터 내가 얻을 : 방영 8/29/11

내 스크립트의 결과가 있어야한다 무엇 : 나는 온라인에 어떤 2011-08-29

: 2029/11--


데이터 내가 얻을 : 방송 돼지 2/12/12

내 스크립트의 결과는해야하는 것 : 2012-02-12

내가 온라인에 무엇 : 2012/12--


,369

if(strstr($serie['airdate'], 'Airs')) { 
      $date = substr($serie['airdate'], 5); 
     } 

     if(strstr($serie['airdate'], 'Aired')) { 
      $date = substr($serie['airdate'], 6); 
     } 

     $mm = strstr($date, "/", true); 
     $mmStrLen = strlen($mm); 
     if((strlen($mm)) == "1") { 
      $mm = "0".$mm; 
     } 

     $dd = substr($date, $mmStrLen+1); 
     $dd = strstr($dd, "/", true); 
     $ddStrLen = strlen($dd); 
     if((strlen($dd)) == "1") { 
      $dd = "0".$dd; 
     } 

     $yy = substr($date, $mmStrLen+1+$ddStrLen+1); 
     if((strlen($yy)) == "1") { 
      $yy = "0".$yy; 
     } 

     $serie['date'] = "20".$yy."-".$mm."-".$dd; 

$ 시리즈 [ '방송일']를 내가받을 데이터와 $ 시리즈 [ '날짜'] 변경된 값을 저장해야하는 위치입니다 : 1,363,210

여기 내 PHP 스크립트입니다.

내가 로컬로 사용하는 PHP 버전은 5.3.8이며 내 웹 호스트 중 하나는 5.2.17입니다. 그러나 이것이 이것이 문제의 근원이 아니라고 생각합니다.

+0

당신이 온라인 버전에서 얻을 수있는 데이터를 확인 했에 이것을 시도하세요? 컴퓨터의 실제 위치 (IP를 통해)에 따라 다른 날짜 형식을 사용하는 웹 서비스를 알고 있습니다. –

+0

데이터베이스에있는 원래의 airdate 데이터도 저장합니다. 온라인과 완전히 동일합니다. – Sebsemillia

답변

1

의견을 코드 형식으로 지정할 수 없으므로 답변으로 작성해야합니다.

양쪽

$x=explode(' ',$serie['airdate']); 
if (sizeof($x)!=2) die("Error in step 1"); 
$x=explode('/',$x[1]); 
if (sizeof($x)!=3) die("Error in step 2"); 
$serie['date']=sprintf("20%02d-%02d-%02d",$x[2],$x[0],$x[1]); 
+0

네, 이것은 양쪽에서 작동하는 것 같습니다 !! 매우 고맙습니다! – Sebsemillia

1

서버에서 로컬로 분할 할 원시 날짜 문자열을 살펴보십시오. OS 날짜 형식이 서버보다 지역적으로 다르며 문자열 분할 코드가 서버가 사용하는 다른 형식을 처리하도록 설계되지 않았기 때문에 기꺼이하겠다.

+0

AFAICS 그는 날짜 함수를 사용하지 않습니다 –

+0

정확하게 날짜 함수를 사용하고 있지 않습니다. 그냥 문자열을 나누어서 .. – Sebsemillia

+0

우리가 볼 수있는 것은'$ serie [ 'airdate']'입니다. 그게 어디에서 왔는지 어떻게 알 수 있습니까? RSS 피드 나 정보를 다르게 형식화하는 데이터베이스에서 가져올 수 있습니다. – Origin

1

날짜를 처리하는 코드가 너무 많습니다. strtotime() 기능을 사용해 보셨습니까? date() 함수와 쌍으로 PHP의 날짜를 쉽게 다시 구성 할 수 있습니다.

+0

답변 대신 답변으로 더 적합 할 수 있습니다. –

관련 문제