javaScriptで文字列から日付オブジェクトに変換する - JavaScript
javaScriptで文字列から日付オブジェクトに変換するコードを紹介します。
概要
JavaScriptで文字列を日付のオブジェクトに変換したい場合があります。文字列から日付オブジェクトを作成する場合には、Date クラスのコンストラクタを利用して変換します。
書式
次の書式を利用して、Dateオブジェクトを作成します。
(変数) = new Date([日付、時刻文字列]);
記述例
var date1 = new Date('2021/10/4');
var datetime1 = new Date('2021/10/4 23:05:12');
プログラム例
コード
下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
function DateTimeProc() {
var textbox = document.getElementById("input");
var dtobj = new Date(textbox.value);
var elem = document.getElementById("output");
elem.innerHTML = "年:" + dtobj.getFullYear() + "<br/>";
elem.innerHTML += "月:" + dtobj.getMonth() + "<br/>";
elem.innerHTML += "日:" + dtobj.getDate() + "<br/>";
elem.innerHTML += "曜日:" + dtobj.getDay() + "<br/>";
elem.innerHTML += "時:" + dtobj.getHours() + "<br/>";
elem.innerHTML += "分:" + dtobj.getMinutes() + "<br/>";
elem.innerHTML += "秒:" + dtobj.getSeconds() + "<br/>";
}
</script>
</head>
<body>
<input id="input" type="text" />
<br />
<input type="button" value="Exec" onclick="DateTimeProc();"/>
<hr/>
<p>出力</p>
<div id="output"></div>
</body>
</html>
解説
[Exec]ボタンをクリックすると下記の
DateTimeProc()
関数を実行します。
function DateTimeProc() {
var textbox = document.getElementById("input");
var dtobj = new Date(textbox.value);
var elem = document.getElementById("output");
elem.innerHTML = "年:" + dtobj.getFullYear() + "<br/>";
elem.innerHTML += "月:" + dtobj.getMonth() + "<br/>";
elem.innerHTML += "日:" + dtobj.getDate() + "<br/>";
elem.innerHTML += "曜日:" + dtobj.getDay() + "<br/>";
elem.innerHTML += "時:" + dtobj.getHours() + "<br/>";
elem.innerHTML += "分:" + dtobj.getMinutes() + "<br/>";
elem.innerHTML += "秒:" + dtobj.getSeconds() + "<br/>";
}
getElementById()
メソッドを呼び出し、入力用のテキストボックスの要素を取得します。
テキストボックスの入力文字列
value
プロパティの値を
Date
クラスのコンストラクタに与えて、文字列の日付、時刻の値のDateオブジェクトを作成します。
var textbox = document.getElementById("input");
var dtobj = new Date(textbox.value);
getElementById()
メソッドを呼び出し、結果を出力する枠の要素を取得します。
要素の
innerHTML
プロパティに先ほど作成したDateオブジェクトの要素の値を設定して、日付の要素の値を画面に表示します。
var elem = document.getElementById("output");
elem.innerHTML = "年:" + dtobj.getFullYear() + "<br/>";
elem.innerHTML += "月:" + dtobj.getMonth() + "<br/>";
elem.innerHTML += "日:" + dtobj.getDate() + "<br/>";
elem.innerHTML += "曜日:" + dtobj.getDay() + "<br/>";
elem.innerHTML += "時:" + dtobj.getHours() + "<br/>";
elem.innerHTML += "分:" + dtobj.getMinutes() + "<br/>";
elem.innerHTML += "秒:" + dtobj.getSeconds() + "<br/>";
実行結果
上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。
テキストボックスに "2021/8/13" を入力します。入力後[Exec]ボタンをクリックします。
入力した文字列がDateオブジェクトに変換され、年、月、日、曜日の情報が出力エリアに表示されます。
月の数値は1月が
0
の値から始まるため、月の数値より1つ少ない値が表示されます。また、曜日は、
0
が日曜日となり、曜日が進むごとに1増えます。
6
が土曜日となります。
詳しくは
こちらの記事を参照してください。
続いて時刻を含めた文字列の動作を確認します。
テキストボックスに "2021/8/13" を入力します。入力後[Exec]ボタンをクリックします。
入力した文字列がDateオブジェクトに変換され、年、月、日、曜日、時、分、秒の値が出力エリアに表示されます。
日付と秒の無い時刻の文字列の動作を確認します。
テキストボックスに "2018/3/9 15:05" を入力します。入力後[Exec]ボタンをクリックします。
ボタンをクリックすると入力した文字列がDateオブジェクトに変換され、出力エリアに表示されます。文字列に含まれていない秒以外の値が表示できています。
年の無い日付の文字列 "6/18" を入力します。入力後[Exec]ボタンをクリックします。
月と日の値には入力した値が表示されています。年の値は2001年になります。時刻の要素はすべて0が表示されています。
年と月のみの文字列 "2018/4" を入力します。入力後[Exec]ボタンをクリックします。
年、月には入力した値が表示されます。日の値は"1"になることが確認できます。
時刻のみの文字列 "8:56" を入力します。[Exec]ボタンをクリックします。
値の欄が "NaN" になります。時刻のみの文字列ではDateオブジェクトに変換できないことがわかります。
同様に秒まで含めた時刻の文字列 "13:24:10" の場合も "NaN"となり、変換できないことが確認できます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用