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

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

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

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

  • Dateオブジェクトインスタンスを生成
  • getFullYear()等を使って、タイムスタンプ型(YYYYMMDDHHMMSS)の文字列を作る
  • 正規表現を使って文字列の置き換え

タイムスタンプ型の文字列を作らずに直接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");

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

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2011-10-10