2017-02-23 15 views
1

私は、ページ(AngularJS 1.4.0)に表示している日付(UTCミリ秒単位)を持っており、ユーザーはタイムゾーンに関係なく東部時間に表示したいと考えています自分のコンピュータに設定します。夏時間に合わせて調整する日付フィルタ

私は日付フィルタを使用しています、とdocumentationから私は、フォーマットに使用する

$filter('date')(date, format, timezone)

タイムゾーンを参照してください。それは、UTC/GMTと米国大陸の標準時間帯の略語を理解していますが、一般的には、'+0430'(グリニッジ子午線の東に4時間30分)のタイムゾーンオフセットを使用してください。利用される。

私は

{{ record.Timestamp | date:'HH:mm:ss.sss':'EST' }}

のようなものを使用し、私は期待どおり、それは時間を書き込むと、今日からタイムスタンプを使用して、私はDSTの周り移動したときに、私は時間でオフになるだろうと思います。私は'EDT'と指定することもできますが、それは1時間前に時間がぶつかるでしょうが、私が使用できるタイムゾーンの省略形は "Eastern"を意味し、日付自体を使ってESTかEDTを使用するかどうかを判断できますか?あるいは、日付に応じて-0500/ESTか-0400/EDTのどちらかで日付を調べてオフセットを作成する必要がありますか? (それはtimezoneのように見えますが、文字列ではなく、関数であるため、自動検出が複雑になります)。

誰もがディスプレイをESTまたはEDTのいずれかにハードコーディングしたいとは思わないでしょう - DSTに合わせてタイムゾーンを調整するほうがはるかに可能です。

+0

問題は、夏時間が普遍的に観察されないことです。それ以外の場合は、1月と7月にDateから 'getTimezoneOffset()'をチェックし、現在の日付のオフセットを比較し、 'EDT'または' EST'を適切に使用することができます。しかし、コードがアリゾナやハワイなどで動くなら、それはうまくいかないでしょう。 –

+0

元の問題よりも私の可能な回避策に問題があるように思えます。私はおそらく、DSTを決定するためにそのようなものを試しているだろう、そして今はそれらの分野のユーザーはいないだろうが、決して_ _ never say _ _ ... – Danny

+0

あなたの "オリジナルの問題"と思われるものに依存する:)。私にとって、実際の問題は、日付フィルタが、より標準的な[IANAリスト](https://www.iana.org/time-zones/repository/tz-link.html)の代わりに米国時間帯略語を使用していることです。 DSTは指定されていません。私はMomentJSに関するYaserの答えに同意します。 –

答えて

1

正しい日時を取得するには、この種のものにMoment.jsMoment Timezoneを使用します。 AngularJSのフィルタは、日時オブジェクトをフォーマットしてUIに表示することです。

Angular-Momentのような使用可能な指示文を使用することもできます。 これは、あらゆる種類のフィルタリングが利用可能です。

+0

さて、私はUIで表示するためにdatetimeをフォーマットしようとしています - これは純粋にプレゼンテーションです。私は 'momentjs'を調べますが、私はちょうどその作品のためにもう2つの図書館を追加することには消極的です。 Angular dateフィルタへの 'timezone'の追加は素晴らしかった - 今私はUTCでそれを表示することができました!実際の時間帯には少し欠けているようです。 – Danny

+0

momentjsはしばらくの間存在しており、いくつかの素晴らしい機能があります。あなたは別のlibが追加について正しいですが、私はプロジェクトのカップルで瞬間を使用しました、それは私が抵抗したがDSTは、高速Iは角モーメントに置かれている近づいて – Yaser

+0

完璧に動作しますが、大きな問題としてこれを考慮していないでしょう。それはうまくいっているようです。 – Danny

関連する問題