私は、ウェブサイト上のフォームから文字列として誕生日を引っ張っています。私は、その日付文字列から年齢を得ることができる必要があります。 私の考えは、スプリット( "%2F"で区切られています)を使用してそれを適切な日付に変換し、それから計算しています。 私が必要とする文字列を引き出すために働くコードは、次のとおりです。GTMのカスタムJavascript変数日付(文字列)を日付に変換する
助けてください。
私は、ウェブサイト上のフォームから文字列として誕生日を引っ張っています。私は、その日付文字列から年齢を得ることができる必要があります。 私の考えは、スプリット( "%2F"で区切られています)を使用してそれを適切な日付に変換し、それから計算しています。 私が必要とする文字列を引き出すために働くコードは、次のとおりです。GTMのカスタムJavascript変数日付(文字列)を日付に変換する
助けてください。
あなたは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をチェックしてください。
これは、日付を作成するためのDateコンストラクタの信頼性のない解析に依存しています。また、年齢の値が年の値の差異だけではない場合(たとえば、2016年12月31日に生まれた人が2017年1月1日に1歳でないなど)、年齢の計算は正しくない可能性があります。 – RobG
@RobG Dateコンストラクタが信頼できないように解析する限り、私の例は、 '1/1/1990'の形式を使用しているので、常に確実に解析されます。また、OPがコンストラクタで再生する他の方法を発見できるように、ドキュメントを指摘しました。 –
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
日付の形式は国によって異なります。米国では日付形式は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');
}
を使用しています。ありがとう。
オペレータはmoment.jsをタグまたは質問に記載していないため、回答に頼るべきではありません。日付文字列を解析するときは、常にパーサに形式を伝える必要があります。そうしないと、* Date.parse *(これはお勧めできません)を使用することもできます。この回答には、OPがその時点から学ぶことができなかったことは何もありません.jsのドキュメントなので、コメントにしてください。 – RobG
[* 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