27

YYYY-MM-DD HH:mm:ss.S、YYYY-MM-DD HH:mm:ss AM/PM などの複数の形式を受け入れるために、javascript とタイムスタンプを使用してタイムスタンプを検証するにはどうすればよいですか。

4

7 に答える 7

55

次のように、文字列が有効なタイムスタンプであるかどうかを検証できます。

var valid = (new Date(timestamp)).getTime() > 0;

var valid = (new Date('2012-08-09')).getTime() > 0; // true
var valid = (new Date('abc')).getTime() > 0; // false

何年も後にこの回答を再検討すると、日付の検証は依然として困難な場合があります。ただし、いくつかの議論は、組み込みのパーサーが多くの入力形式を受け入れ、その多くはほとんど関連性がないというものです。

ここでの問題は、複数の形式のタイムスタンプを検証することです。日付パーサーが役に立たない限り、タイムスタンプを比較可能な汎用形式に変換する必要があります。この形式に変換する方法は、入力の形式によって異なります。互換性のない入力の場合は、調整された変換アルゴリズムを開発する必要があります。

上記のように、組み込みの日付パーサーを使用するか、そうでない場合は、入力を手動で解析し、それに応じて検証する必要があります。

于 2012-09-14T10:50:35.820 に答える
3
var d = Date.parse(your_timestamp);

dNaN ではなく、有効な数値である必要があります。

参照: http://www.w3schools.com/jsref/jsref_parse.asp

于 2012-09-14T10:55:10.797 に答える
1

形式が何であるか、または少なくともそれが限られた数の形式の1つであることを事前に知らずに、日付文字列を一般的に解析することはできません。

日付コンポーネントが常に ISO8601 形式 (yyyy-mm-dd) であり、時刻が AM または PM を含む 24 時間または 12 時間のいずれかである場合、時間を簡単に分割し、AM または PM を探して、時間を処理できるはずです。存在するかどうかに応じて、12時間または24時間として。

タイムゾーンは、UTC (Z) または時間 +/-UTC として指定する必要があります。EST などの略語はあいまいです (標準化されていません)。

于 2012-09-14T11:23:44.140 に答える
0

を使用 new Date().getTime(); すると、これを行うことができます

そして、このようなことをしています

var getDate="12-12-2012";
var myDate=getDate.split("-");
var getDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
alert(new Date(getDate).getTime());
于 2012-09-14T11:00:35.397 に答える