2012-09-14 16 views
11

javascriptとタイムスタンプを使用して複数のフォーマットを受け入れるためにタイムスタンプをどのように検証するのですか? YYYY-MM-DD HH:mm:ss.S、YYYY-MM-DD HH:mm:ss AM/PM。javascriptでタイムスタンプを検証する方法

+0

http://momentjs.com/ – Andreas

+0

Date.jsからのミリ秒数? http://stackoverflow.com/questions/2408202/jquery-datejs-is-there-validation-for-full-date –

+1

「validate」と記述してください。 – David

答えて

29

文字列は、このような有効なタイムスタンプである場合は、検証することができます:

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 
+1

「Date.parse」を使用してDateコンストラクタが解析できるものと同様に+1が「有効」です。これは必ずしもブラウザ間で一貫しているとは限りません。 – David

+1

しかし、入力形式がパーサーに準拠していない場合は、事前に変換する必要があります。 –

+1

注意:これは、技術的に有効なタイムスタンプであるが、おそらくアプリケーションのコンテキストで有効な日付ではない、日付文字列 '4'でtrueを返します。 – Jason

2
var d = Date.parse(your_timestamp); 

dが有効な数値ではなくNaNにする必要があります。

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

+2

-1 W3Schoolaはひどく、[Date.parse](http://ecma-international.org/ecma-262/5.1/#sec-15.9.4.2)は実装に依存しており、非常に信頼性がありません。日付文字列は手動で解析する必要があります。 – RobG

+1

なぜw3schoolsがひどく、Date.parseが信頼できないのか教えてください。 – Srinivas

+0

[w3fools](http://w3fools.com/)にはいくつかのヒントがあります。 'Date.parse'はECMA-262 ed 3で完全に実装されていましたが、ES5ブラウザではISO8601の長い形式をサポートする必要があります(ただし、そうでないものもあります)。 'Date.parse( '2012-02-01')'がIE <9とSafariで失敗すると、 'Date.parse( '2012/02/01')'はFirefoxのほとんどのバージョンで失敗しません。一部は'01 -02-2012 'を解析せず、'01/02/2012'を解析し、システム設定にかかわらずすべて米国の日付形式として扱います。私は追跡を断念し、手動で日付を解析します。 – RobG

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()); 
0

のようなこの

とやって何かを行うことができます少なくとも、それは限られた数のフォーマットの1つであるということです。

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

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

0

すべての有効な数値はタイムスタンプです。有効な整数の条件を満たす場合は、有効なタイムスタンプの条件も満たします。

タイムスタンプ= 1970年1月1日

関連する問題