2012-02-28 11 views
1

ニュース記事が公開された日付を処理するために書いた他の誰かのコードに頭を浮かべています。この行を使用しているため、問題が発生しました - jqueryカレンダーウィジェットを使用して選択した日付を処理するには、この行を使用しているため、問題が発生しました。これは将来の日付で正常に動作しますが、前の暦年の日付を使用しようとすると、代わりに現在の年が使用されます。これは、選択した日と月の最も近いインスタンスを見つける「真夜中」によるものだと思います。strtotimeで日付処理を理解する

私は「深夜」を取り除くことができましたが、これがどういう影響を及ぼすのかはわかりません。深夜がそこにある理由はありますか?

EDIT:これは日付を処理するコードの完全なブロックです。日付には時刻が含まれているため、ユーザーは特定の時刻にアイテムを公開できます。

  $array['display_date'] = '24 October, 2011 17:30'; 
      $string = $array['display_date']; 
      $dateString = substr($string, 0, -5); 

      $timeArray = explode(':', substr($string, -5)); 
      $hours_in_secs = 60 * 60 * $timeArray[0]; 
      $mins_in_secs = $timeArray[1]; 
      $date = strtotime("midnight", strtotime($dateString)); 

      $timestamp = $date + $hours_in_secs + $mins_in_secs; 

      //assign timestamp to validation array 
      $array['display_date'] = $timestamp; 
      echo $array['display_date']; // Output = 1351094430 (Oct 24 2012 17:00:30) 
+1

'$ dateString'の形式は何ですか? – Mchl

+0

サンプル入力、期待出力、実際の出力? –

+0

サンプル入力と出力で更新 – user1153594

答えて

4

これは実際には$dateStringの内容によります。あなたのjQueryウィジェットが時間部分を提供したと仮定すると、あなたの同僚は時間部分を削除したかったでしょう。次の比較:

echo date(DATE_ATOM, strtotime('2010-10-01')); 
// 2010-10-01T00:00:00+02:00 

注これらすべてのこと:

echo date(DATE_ATOM, strtotime('2010-10-01 17:32:00')); 
// 2010-10-01T17:32:00+02:00 

echo date(DATE_ATOM, strtotime("midnight", strtotime('2010-10-01 17:32:00'))); 
// 2010-10-01T00:00:00+02:00 

ウィジェットは、時間部分を返しdoesntの場合、私はそれが自動的に深夜になりますので、深夜に日付を設定するための何らかの理由を参照してくださいいけませんは、過去にはの日付であり、あなたが言うように、現在の年ではなく過去の特定の年になります。彼らがあなたのコードで行う場合、その原因はどこかにあるはずです。

コードを変更すると影響がありますか?私たちは知ることができません。これはコードの1行に過ぎず、コンテキストについては何も分かりません。 unit-testsは、コードを変更したときに何かが壊れたときに通知する必要があります。

EDIT更新

後にあなたが表示され、コードブロックは全く意味がありません。それを書いた人にそれがするべきことを尋ねる。過去数年間は誤って現在の年を返すだけでなく、分に間違った結果をもたらすこともあります。

24 March, 2010 17:30 will be 2012-03-24T17:00:30+01:00 

私はこれが認識されないstrtotime形式である有効なタイムスタンプ、へ24 March, 2010 17:30を回すの試みであったと仮定します。しかし、このアプローチは壊れています。あなたがPHP5.3の使用にある

$dt = DateTime::createFromFormat('d F, Y H:i', '24 March, 2010 17:30'); 
echo $dt->format(DATE_ATOM); // 2010-03-24T17:30:00+01:00 

あなたはまだ5.3上にない場合は、代替ソリューションのhttps://stackoverflow.com/search?q=createFromFormat+phpを通過します。そこには夫婦がいる。

+0

Gordonに感謝します。ニュースアイテムは、ユーザーが正確な時刻にそれらを公開できるように実際に設定されているため、日付と時刻はカレンダーで選択されます。ちょうどこれをチェックし、正しく動作します。 – user1153594

+0

私はそこにあるものを取り除き、最初からそれを開始するのが最善です。ありがとうゴードン – user1153594

+0

年前のカンマが主な問題であり、コードの残りの部分も整理する必要があります。 – user1153594