JavaScriptでDATETIME型の日付を得る方法

presented by 役に立つかもしれないBlog

JavaScriptで直接PHP+MySQLのスクリプトとやり取りを行いたい場合に日付情報をDATETIME型に整形して送信したい場合があります。 その時の方法をご紹介します。

DateオブジェクトからYYYYMMDD...にして正規表現で変換

やり方は単純。 次のようなやり方でDATETIME型になるまで変換します。

タイムスタンプ型の文字列を作らずに直接DATETIME型の文字列を作ることもできますが、タイムスタンプ型もあると便利ですよね?

var dt = new Date();
var timestamp = dt.getFullYear()+
                (String(dt.getMonth()+101).substr(1,2))+
                (String(dt.getDate()+100).substr(1,2)+
                (String(dt.getHours()+100).substr(1,2))+
                (String(dt.getMinutes()+100).substr(1,2))+
                (String(dt.getSeconds()+100).substr(1,2)));

timestamp.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/);
var datetime = RegExp.$1+'-'+RegExp.$2+'-'+RegExp.$3+
                     ' '+RegExp.$4+':'+RegExp.$5+':'+RegExp.$6;

getMySQLDate()なるものを作ってみる

上記を使いやすい関数にしてみました。 引数の1番目にDateオブジェクトを、2番目の引数に「timestamp」あるいは「datetime」を指定すると、その形式にあった日付文字列を返します。

function getMySQLDate(dt, dtype) {
	var timestamp = dt.getFullYear()+
	                (String(dt.getMonth()+101).substr(1,2))+
	                (String(dt.getDate()+100).substr(1,2)+
	                (String(dt.getHours()+100).substr(1,2))+
	                (String(dt.getMinutes()+100).substr(1,2))+
	                (String(dt.getSeconds()+100).substr(1,2)));
	if (dtype=="timestamp") return timestamp;

	timestamp.match(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/);
	var datetime = RegExp.$1+'-'+RegExp.$2+'-'+RegExp.$3+
			' '+RegExp.$4+':'+RegExp.$5+':'+RegExp.$6;
	if (dtype=="datetime") return datetime;
}

使用例

var dt = new Date();
var datetime    = getMySQLDate(dt, "datetime");
var timestamp = getMySQLDate(dt, "timestamp");

という感じです。 お役に立ちましたでしょうか?

    このエントリーをはてなブックマークに追加

このページに関連のある記事はこちら

コメントフォーム