0

日時列に日付と時刻を挿入しています。ここでは、日付と時刻の値のみを取得しています。手動で割り当てて、日時をMySQLの日時構文と一致させるために次のようにしました。

if($start==NULL && $end==NULL){    
    $start = '01:00:00';
    $end = '02:00:00';    
}

$eve_start = $year."-".$nmonth."-".$date." ".$start;
$eve_end = $year."-".$nmonth."-".$date." ".$end;

今、私は$ yearで年、 $ nmonthで月、$ dateで日付を取得し、開始時刻として$ start、終了時刻として$endを取得しています。

$eve_startは2012-06-0101:00:00のようになります。また、個別に印刷すると、$ year、$ nmonth、$ dateの代わりに適切な値が取得されますが、$eve_startまたは$eve_endを印刷すると次のようになります。年の部分のみが印刷されます。

また、データベースでは、日時に対応する値が0000-00-00 00:00:00として挿入され、2012-06-0101:00:00である必要があります。

XMLタグからこれらの値を取得しています。XML形式とCURLを使用してGoogleカレンダーイベントをインポートしています。簡単なイベントの場合、開始日と終了日を時間とともに取得します。しかし、それが終日のイベントである場合、私はxmlファイルで時間を取得せず、開始日と終了日のみを取得します。今私がしているのは、終日のイベントが来るたびに、開始時刻と終了時刻をチェックし、それがnullの場合は、静的な値を割り当てます。私のデータベースに単純なイベントを挿入することに問題はありません。問題は終日のイベントのみです。

4

4 に答える 4

1

mktime()を使用してタイムスタンプ形式で時間を保存する必要があります。そして、date()関数を使用してそれを取得します。

于 2013-01-04T07:16:06.530 に答える
0

date()関数を使用してこれをフォーマットする必要があります

$start_dt = date("Y-m-d H:i:s", strtotime($eve_start));
$end_dt = date("Y-m-d H:i:s", strtotime($eve_end ));
于 2013-01-04T07:03:43.703 に答える
0

MySQL DATE_FORMATを見てください。

MySQL はデフォルトの日時を yyyy:mm:dd h:i:s として保存します。

以下のコードは、問題の解決に役立ちます。

SELECT
      DATE_FORMAT(YOUR_DATE_FIELD,'%Y') AS YOUR_YEAR,
      DATE_FORMAT(YOUR_DATE_FIELD,'%m') AS YOUR_MONTH,
      DATE_FORMAT(YOUR_DATE_FIELD,'%d') AS YOUR_DAY
from your_table

MySQL に日時フィールドを保存するには、現在の日付と時刻を保存する NOW() mysql 関数を追加するだけです。

INSERT INTO table ( data , date ) VALUES('".$date."',NOW() );

質問を編集して、問題に関する詳細を追加してください。

  1. その3つの変数がどこから来ているか。
  2. これら3つにどのような価値を割り当てているか。
  3. はいの場合、MySQLクエリからこれら3つを取得していますか。上記のソリューションで解決します。

それでも問題が解決しない場合、問題はスクリプトではなく、ブラウザのキャッシュにある可能性があります

コードを実行して、役立つ結果を確認してください。

于 2013-01-04T08:26:51.130 に答える
0
  1. PHP 側: 同じコードを試してみたところ、PHP で日付時刻が正しく表示されました。

    http://codepad.org/mKmNM9Yu

  2. Mysql 側: 列の型が「datetime」であることを確認してください。また、挿入クエリで日付変数を正しく割り当てたことを確認してください。

于 2013-01-04T13:27:10.627 に答える