2017-01-31 26 views
0

私は、ウェブサイト上のフォームから文字列として誕生日を引っ張っています。私は、その日付文字列から年齢を得ることができる必要があります。 私の考えは、スプリット( "%2F"で区切られています)を使用してそれを適切な日付に変換し、それから計算しています。 私が必要とする文字列を引き出すために働くコードは、次のとおりです。GTMのカスタムJavascript変数日付(文字列)を日付に変換する

助けてください。

+0

[* Date.parseが間違った結果をもたらすのはなぜですか?*](http://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results)から開始し、年齢を計算しますおそらく[* JavaScriptは開始日から年月日を計算します*](http://stackoverflow.com/questions/11570232/javascript-calculate-years-and-days-from-start-date)。 – RobG

答えて

0

あなたは1/1/1990のような形式で、ユーザの入力日付を持っている場合、あなたはこのような何か行うことができます:

var inputField = document.getElementById("date-of-birth-input"); // `1/1/1990` 
var today = new Date().getFullYear(); 
var birthdate = new Date(inputField).getFullYear(); 
var age = today - birthdate; 

をJavaScriptのDateコンストラクタはそれが日付に変わることができるもので、かなり柔軟性があるので、あなた分割文字列の手間を経る必要はないかもしれません。 docsをチェックしてください。

+0

これは、日付を作成するためのDateコンストラクタの信頼性のない解析に依存しています。また、年齢の値が年の値の差異だけではない場合(たとえば、2016年12月31日に生まれた人が2017年1月1日に1歳でないなど)、年齢の計算は正しくない可能性があります。 – RobG

+0

@RobG Dateコンストラクタが信頼できないように解析する限り、私の例は、 '1/1/1990'の形式を使用しているので、常に確実に解析されます。また、OPがコンストラクタで再生する他の方法を発見できるように、ドキュメントを指摘しました。 –

+1

MDN [* Date.parse *](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse)および[* Date *](https: /developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)。 – RobG

0

日付の形式は国によって異なります。米国では日付形式はMM-DD-YYYYですが、アジア諸国では日付形式はDD-MM-YYYY、中国では'YYYY-MM-DD 'です。日付を扱うについて移動する正しい方法はMoment.js

を使用しているあなたは、シンプルなアプリケーション/ウェブサイトをお持ちの場合

<script src="moment.js"></script> 

(あなたがmoment.jsをダウンロードしに保管していることを望んを次のようにあなたの<head>タグのモーメントを含めますindex.htmlと同じ構造体)。それ以外の場合は、ダウンロードせずにネットから直接使用したい場合に使用してください。

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/locale/af.js"></script> 

それから私はこれが役に立てば幸い以下

function() { 
    /* First-make sure you format moment according to your giving locale. 
     I'm formating here according to the US date format */ 
    var inputField = moment(document.getElementById("date-of-birth-input")).format("MM-DD-YYYY"); 
    return moment().diff(inputField, 'years'); 
    } 

を使用しています。ありがとう。

+0

オペレータはmoment.jsをタグまたは質問に記載していないため、回答に頼るべきではありません。日付文字列を解析するときは、常にパーサに形式を伝える必要があります。そうしないと、* Date.parse *(これはお勧めできません)を使用することもできます。この回答には、OPがその時点から学ぶことができなかったことは何もありません.jsのドキュメントなので、コメントにしてください。 – RobG

関連する問題