DoctrineとDateTimeが間違った違いを示している

コルバートン

の問題に頭を悩ませることはできませんDateTime()データベースで節約された時間と現在の時間の違いが必要です。ローカルマシンでは動作しますが、ライブサーバーでは動作しません。

これは私のフィールド定義です:

/**
 * @ORM\Column(name="start_time", type="datetime", nullable=true)
 */
protected $startTime;    
/**
 * @ORM\Column(name="end_time", type="datetime", nullable=true)
 */
protected $endTime;

開始時間と終了時間を設定してから、差を計算することは常に機能します。

$diff = $entry->getEndTime()->diff($entry->getStartTime());

開始時刻のみが設定されている場合は、現在の時刻との差が必要なので、次のようにします。

$diff = (new \DateTime())->diff($entry->getStartTime());

しかし、これは機能しません。違いは2時間から低いです。

開始時間と終了時間は、次のようなフォーム入力で設定されます。

// user inputs for example: 08:50 for $start and 17:45 for $end
$dateStr = date('Y-m-d');
$entry->setStartTime(new \DateTime($dateStr.' '.$start));
$entry->setEndTime(new \DateTime($dateStr.' '.$end));

UTCではなくヨーロッパ/ベルリンのタイムゾーンを使用することで2時間の休暇が発生すると推測していますが、これに対応するにはどうすればよいですか?

交換new \DateTime()
するnew \DateTime('now', new \DateTimeZone('Europe/Berlin'))
new \DateTime('now', new \DateTimeZone('UTC'))
、効果はありません。

助けてくれてありがとう。

要求に応じて編集

$currentDate = new \DateTime();
$currentDate->modify($currentDate->getOffset() . ' seconds');
// var_dump($entry->getStartTime())
object(DateTime)#358 (3) {
  ["date"]=> string(19) "2014-06-29 09:20:00"
  ["timezone_type"]=> int(3)
  ["timezone"]=> string(3) "UTC"
}
// var_dump($currentDate)
object(DateTime)#337 (3) {
  ["date"]=> string(19) "2014-06-29 06:50:00"
  ["timezone_type"]=> int(3)
  ["timezone"]=> string(3) "UTC"
}
// local time: 11:20:00
// difference should be: 2:30 but is 0:30
デビッド・ジャック

ベルリンのユーザーが12:00を入力すると(12:00ヨーロッパ/ベルリンが念頭にあります-UTC時間の10:00)、Doctrineはタイムゾーンなしで日付(12:00)を保存します。

DateTimeフィールドを取得すると、Doctrineによって12:00ベルリンではなく12:00 UTC(デフォルトのアプリケーションtimeZone)として再作成されます

したがって、ユーザーが提供した日付をシステムが提供した日付と比較するには、ユーザーのタイムゾーンを保存する必要があります。Doctrineのドキュメントを参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

日時の違いがmysqlで間違った値を示している

分類Dev

jest--coverageが間違ったパスを示している

分類Dev

Date()が間違った時刻を示している

分類Dev

NSDate()またはDate()が間違った時刻を示している

分類Dev

phpdate_createが間違った年を示しています

分類Dev

Visual StudioCodeのTSLintが突然間違ったlintエラーを示している

分類Dev

javascript arrray.unshift()が間違った結果を示している

分類Dev

カレンダーが間違った曜日を示している

分類Dev

PHPのDateTimeの違いが間違った日数を返しています

分類Dev

動的なTestNGXMLの作成。間違ったXMLを取得しています。私が間違っているところ

分類Dev

パンダto_datetimeが間違った年を解析している

分類Dev

ディスクがDFで間違ったサイズを示し、gpartedとvmwareで正しいサイズを示している

分類Dev

価格の合計が間違った値を示しています

分類Dev

価格の合計が間違った値を示しています

分類Dev

Javaは間違った今年を示しています

分類Dev

破損したUSBRAWファイルシステムが間違ったサイズを示している

分類Dev

Edittext.Textは正しい値を示していますが、間違った値を使用しています

分類Dev

AxiosがDELETEとGETを間違った順序で作成している

分類Dev

Firefoxのアドレスバーが間違ったドメインを示唆している

分類Dev

XcodeSwiftオートコンプリートが間違った方法を示している

分類Dev

製品のSSASディメンションが間違った価格形式を示している

分類Dev

ident_currentは、最後に挿入されたIDが間違っていることを示しています

分類Dev

$ ionicActionSheetが間違った形式を表示している

分類Dev

SQL ServerXMLが間違った出力をクエリしている

分類Dev

jQueryの幅が間違った値を取得している

分類Dev

Java NetbeansCalculatorが間違った計算を実行している

分類Dev

jquery .parent()が間違った要素を選択している

分類Dev

EFCoreが間違った列名を選択している

分類Dev

WebGLvertexAttribPointerが間違ったVBOを指している

Related 関連記事

  1. 1

    日時の違いがmysqlで間違った値を示している

  2. 2

    jest--coverageが間違ったパスを示している

  3. 3

    Date()が間違った時刻を示している

  4. 4

    NSDate()またはDate()が間違った時刻を示している

  5. 5

    phpdate_createが間違った年を示しています

  6. 6

    Visual StudioCodeのTSLintが突然間違ったlintエラーを示している

  7. 7

    javascript arrray.unshift()が間違った結果を示している

  8. 8

    カレンダーが間違った曜日を示している

  9. 9

    PHPのDateTimeの違いが間違った日数を返しています

  10. 10

    動的なTestNGXMLの作成。間違ったXMLを取得しています。私が間違っているところ

  11. 11

    パンダto_datetimeが間違った年を解析している

  12. 12

    ディスクがDFで間違ったサイズを示し、gpartedとvmwareで正しいサイズを示している

  13. 13

    価格の合計が間違った値を示しています

  14. 14

    価格の合計が間違った値を示しています

  15. 15

    Javaは間違った今年を示しています

  16. 16

    破損したUSBRAWファイルシステムが間違ったサイズを示している

  17. 17

    Edittext.Textは正しい値を示していますが、間違った値を使用しています

  18. 18

    AxiosがDELETEとGETを間違った順序で作成している

  19. 19

    Firefoxのアドレスバーが間違ったドメインを示唆している

  20. 20

    XcodeSwiftオートコンプリートが間違った方法を示している

  21. 21

    製品のSSASディメンションが間違った価格形式を示している

  22. 22

    ident_currentは、最後に挿入されたIDが間違っていることを示しています

  23. 23

    $ ionicActionSheetが間違った形式を表示している

  24. 24

    SQL ServerXMLが間違った出力をクエリしている

  25. 25

    jQueryの幅が間違った値を取得している

  26. 26

    Java NetbeansCalculatorが間違った計算を実行している

  27. 27

    jquery .parent()が間違った要素を選択している

  28. 28

    EFCoreが間違った列名を選択している

  29. 29

    WebGLvertexAttribPointerが間違ったVBOを指している

ホットタグ

アーカイブ