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