私は時間とともにいくつかの魔法をやるレガシーシステムを持っています。タイムゾーンとそのタイムゾーンを知っている時のUTC時間を計算します
私はタイムゾーン(例設定することができます。レガシーシステムのどこかにEurope/Bucharest
を管理者がバックエンドのどこかで時間を入力することができますが、が、それは常にUTC時間になります
時間が保存されると、データベースには上記の設定されたタイムゾーンが考慮されますので、管理者が10 PMと言っても、データベースの時刻は7 PMになります(それはちょっと愚かです)。私がやっているデータベースからの直接の時間は、管理者が実際に入力した時間ではなく、タイムゾーンに調整されます。
Long story short:タイムゾーンとそのタイムゾーンを知っていれば、正しいUTC時間をどのように計算できますか?例:午後7時から午後10時の間、時間帯がEurope/Bucharest
であることがわかったとき。私は非ハックな方法でこれをやりたい(誰が私を追加したり、修正したい場合は、本当に、行ってください)...
を私は推測する自分の質問に答えるために
'createFromFormat()'の本当の美しさは、すべてを1ライナーにすることです。 'echo DateTime :: createFromFormat( 'Ymd \ TH:i:s'、$ database_time、new DateTimeZone( 'UTC' )) - > setTimezone(new DateTimeZone( 'Europe/Warsaw')) - > format( 'Ymd H:i:s'); ':) – Narf
あなたはコードではなく、理解しています。データベースに格納されている時間は、現在のタイムゾーンにあります(この例では、 'Europe/Bucharest'に追いついています)。 – Andrew
OK、このケースでは私の答えの2番目の例はまだありますが、実際には$ local_timeがUTCに変換しようとしていると仮定する必要があります。 –