JavaScript で DateオブジェクトからW3C-DTF文字列 へ変換する関数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | var g = g || {}; g.date = g.date || {}; g.date.W3CDTF = {}; /** * DateオブジェクトからW3C-DTFフォーマット文字列へ変換します。 * @param {Date} date Dateオブジェクト * @return {string} W3C-DTFフォーマット文字列 */ g.date.W3CDTF.stringify = function (date) { // 数値をパディングする関数 var paddingNumber = function (number, length) { var source = String(number); var count = length - source.length; if (count < 0) { return source; } while (count--) { source = '0' + source; } return source; }; // 必要なデータを準備 var year = date.getUTCFullYear(); var month = date.getUTCMonth() + 1; var day = date.getUTCDate(); var hour = date.getUTCHours(); var minute = date.getUTCMinutes(); var second = date.getUTCSeconds(); var millisecond = date.getUTCMilliseconds(); var timezone = 'Z' ; var text = '' ; // W3C-DTFの YYYY-MM-DDThh:mm:ss.sTZD 形式文字列になるよう結合 text += year; text += '-' ; text += paddingNumber(month, 2); text += '-' ; text += paddingNumber(day, 2); text += 'T' ; text += paddingNumber(hour, 2); text += ':' ; text += paddingNumber(minute, 2); text += ':' ; text += paddingNumber(second, 2); text += '.' ; text += paddingNumber(millisecond, 3); text += timezone; return text; }; |
以前の記事「W3C-DTF形式文字列をDateオブジェクトへ変換」と対をなす感じ。 必要かどうかは別にして、片側だけってのが気持ち悪かったので作ってみた。
ちなみに、実行結果は次のような感じ。 Date列は「(new Date).toLocaleString()」をぶち込んで、 string列は「g.date.W3CDTF.stringify(new Date())」をぶち込んでる。 (まぁ、見ても当然すぎて何のおもしろみもにけれど…何となく画像を載せたかった^^;)
※コードに間違いがあったので修正しました(2012.09.05)最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!