2011-12-28 10 views
0

私は次の問題があります。私はTVショーのAirdateを取得し、データベースに保存する前にそれを変更するスクリプトを持っています。ローカルではlocalhost上では完璧に動作しますが、オンラインで試してみると、Webサーバーにアップロードされたときに別の動作が示されます。なぜそうなのかわかりません。ここでオンラインで異なる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--


ここ

は私のPHPスクリプトです:

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; 

$セリエ[「放送日」]私はセリエ[「日付」]を取得し、$データが変更された値を保存する場所です。

私がローカルで使用するPHPのバージョンは5.3.8で、私のウェブホストの1つは5.2.17です。しかし、私はこれが問題の根源ではないと思います。

+0

はあなたがオンライン版に取得データを検証しましたか?両側にこれを試してみてください。私はあなたのマシンの物理的な場所(IPを介して)に応じて異なる日付形式を使用するWebサービスを知っています。 –

+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

これは、回答ではなくコメントとしてよく適しています。 –

関連する問題