2016-03-29 17 views
0

私は非常に奇妙な問題があります。私はデータベースからオブジェクトを取得していますが、このオブジェクトはアプリケーションの日付が異なります(常に10分です)。私はまったくここで何が起こっているのか理解していない。私はSymfony2とMySql(MariaDB)を使用します。たとえば、以下の(18:50と午後06時40分):データベースとアプリケーションで異なる日付(時間) - 10分

enter image description here enter image description here

誰でもいくつかのアイデア?なぜf ** 10分、タイムゾーンは時差があるのですか...私は全く愚かです。ヘルプThx。

コード:

$synch = $this->getDoctrine()->getManager()->getRepository('LizukKiteBundle:Synchronization')->createQueryBuilder('s') 
     ->orderBy('s.id', 'desc') 
     ->setMaxResults(1) 
     ->getQuery() 
     ->getResult() 
    ; 

    if ($synch) { 
     $synch = $synch[0]; 
    } else { 
     $synch = null; 
    } 
    dump($synch);die(); 

// EDIT:

私はいつも最後のレコードが間違った日付で印刷されていることを発見した - しかし、なぜ?私は考えていません:/

私はいつも最後のものだけが "壊れて"より多くのオブジェクトをdbから取得します。多分誰かを助けるでしょうか?もう一度だけ最後のレコードの上

enter image description here enter image description here

enter image description here enter image description here

- 私はその問題がコードであると思います..しかし、それは大丈夫に見えます。

EDIT ///

いいえ、問題は解決しました。私はこのデータベーステーブルの最後のオブジェクトをListenerのonKernelRequestメソッドでも取得していることを忘れています。

$maintenanceTime = clone $maintenanceTime; //cloning Synchronization object here 
$maintenanceTime = $maintenanceTime->getDate(); 
$maintenanceTime->modify('+5 minutes'); 

ソリューションは、次のとおりです:。その弱いコードが作成された理由

$maintenanceTime = clone $maintenanceTime->getDate(); //clonning DateTime object 
$maintenanceTime->modify('+5 minutes'); 

いけない私に尋ねるため Thxを、そこに私は、 'クローン' コード:(

私が持っていたで基本的なエラーが発生しました助けてあなたの時間を無駄にしないでください

+1

サーバos、php、mysqlにはどのようなタイムゾーンがありますか? 読んでください:[時間帯は時間で区別されません](http://infiniteundo.com/post/25509354022/more-偽り - プログラマ - 信じる - 約時) – JimL

+0

データベース内のレコードはどうですか?日付が正しく保存されていますか? – Aerendir

+0

すべてがうまく見えます。常に最後のレコードだけが壊れています..私はdbからレコードを取得するコードが問題を引き起こすと思います.. – LuckyLue

答えて

0

問題は解決しました。私はこのデータベーステーブルの最後のオブジェクトをListenerのonKernelRequestメソッドでも取得していることを忘れています。そして、そこに私は「クローン」コード:(

における基本的なエラーが発生しました私が持っていた:

$maintenanceTime = clone $maintenanceTime; //cloning Synchronization object here 
$maintenanceTime = $maintenanceTime->getDate(); 
$maintenanceTime->modify('+5 minutes'); 

策がある:その弱いコードが作成された理由を

$maintenanceTime = clone $maintenanceTime->getDate(); //clonning DateTime object 
$maintenanceTime->modify('+5 minutes'); 

いけない私に尋ねる助けをThxを。あなたの時間を無駄にしないでください

0

ああ、私は同じ問題を抱えていましたが、PHPでもSymfony2ではなく、Javaです。エルアル問題。

私にとっての問題は、私たちがマイクロだけミリ秒をサポートしていませんJava7に我々のアプリを実行していたということでした。 DBが値2015-03-29 18:40:18を保持していると思うようにあなたを誘惑しているようですが、それには2015-03-29 18:40:18.123456のようなものがあります。したがって、あなたのdatetime文字列をDateTimeオブジェクトにパースしようとすると、最後の3桁が最初の3桁に加算され、約10分(私の場合は12分)のタイムシフトが生成されます。

これは、DBエンジンがDateTimeをどのように格納しているかを調べるソリューションになると思います。それは典型的なdatetimeタイプなのでしょうか?

これで問題が解決されることを願っております。

関連する問題