65

コードで日付のない時間を解析して操作する必要があります。たとえば、タイムピッカーから文字列「15:00」を取得する場合があります。これをある種の Time オブジェクトに変換したいと考えています。通常は、Date、Time、および Datetime オブジェクトが異なる Python で作業しています。

ただし、私が見たすべてのソリューションは、Date オブジェクトの使用に焦点を当てています。日付情報が必要なため、「15:00」のような文字列は解析できません。私は任意の Date 情報を Times に追加したくありません - 特に、Date は日やロケールに応じて夏時間などのことを仮定しているように見え、時間を自動的に変換しようとするリスクがあるように見えるためです。指定されたロケール。さらに、「15:00 + 1時間」などの時間を追加できるようにしたい

日付に関連付けられていない「生の」時間を解析して処理するための推奨される解決策は何ですか?

4

7 に答える 7

24

残念ながら、優れた解決策はありません。JavaScript にはDateオブジェクトしかありません。実際には日付と時刻であるため、おそらく名前が間違っています。

より深く考えたいと思うかもしれないことの 1 つ - 時間だけで作業したいとおっしゃいましたが、それは時刻のことですか、それとも期間のことですか? これらは 2 つの関連性がありますが、概念が少し異なります。

たとえば、「15:00 + 1 時間」のような操作が必要だと言いました。いずれにせよ、それは明らかに16:00になります。しかし、「15:00 + 10 時間」はどうでしょうか。期間について話している場合は 25:00 になりますが、時刻について話している場合は 01:00 になる可能性があります。

実際には、すべての日に 24 時間が含まれているわけではないため、01:00 ではない可能性があります。23、23.5、24.5、または 25 時間がある日もあります。これは、タイム ゾーンと、その日に DST が開始または終了するかどうかによって異なります。したがって、時刻のコンテキストでは、特定の日付とゾーンを計算に含めたいと思うでしょう。もちろん、1 日 24 時間連続のことを話しているのであれば、この点は関係ありません。

期間について話している場合は、オブジェクトではなく、moment.jsをもう一度見たいと思うかもしれませんmoment。そこには別のオブジェクトがありmoment.durationます。参照はこちらです。

最後に、単純な JavaScript を使用して、時間文字列から時間と分を数値として解析することを検討してください。必要に応じて数値を操作し、再度文字列を出力します。しかし、あなたの質問は、より管理されたものを探しているようです。

于 2013-07-27T19:11:56.433 に答える