10

Web アプリケーションで日付と時刻を処理するために、優れた (しかし大規模な) DateJSライブラリを使用しています。対処方法がわからないものに出くわしました。

ユーザーが日付なしで時間文字列のみを入力できるようにしたいのですが、好きな方法で入力できるようにする必要があります。例えば:

  • 午後5:00
  • 17:00
  • 午後5:00
  • 午後5時
  • 5p

UsingDate.parse(value)は、これらの文字列を完全な日付に変換します。これはまさに私が望むものです。ただし、次のような日付文字列の他の部分を入力することもできます。

  • 土 午後5時
  • 2010 年 1 月 1 日午後 5 時

DateJS を使用して入力フィールドの時刻値を検証しようとしています。何かのようなもの:

function validateTime(value) {
    return Date.parse(value) !== null;
}

これを解決するために DateJS 機能を使用する方法はありますか? 解決策を提供するSOの質問は他にもありますが、DateJSにこれを行う方法がある場合、これを行うためにアプリにカスタムコードを追加したくありません.

4

2 に答える 2

10

質問をした直後に、Date.parseExact() がフォーマット文字列の配列を取ることができることを発見しました。どういうわけか私はそれが恋しいです。次のコードで何かが機能するようになりました。

function validateTime(input) {
    return Date.parseExact(input, [
            "H:m",
            "h:mt",
            "h:m t",
            "ht","h t"]) != null ||
        Date.parseExact(input, [
            "h:mtt",
            "h:m tt",
            "htt","h tt"]) != null;
};

一部の形式は同時に一緒に含めることができないように見えることに注意してください。そのため、それらを 2 つの別々の parseExact() 呼び出しに分割しています。この場合、single を含む文字t列を double を含むフォーマット文字列に含めることはできませんでしttた。

于 2010-10-25T08:32:46.367 に答える