プロが教えるわが家の防犯対策術!

JavaScriptで 秒後の日付時刻へ変換するプログラムを教えてください。

例えば

15247秒後(04時間14分07秒)

2012/12/29 08:47:07


2357秒後(0時間39分17秒)

2012/12/29 05:47:07

のようになる感じにしたいのです。


よろしくお願いいたします。

A 回答 (3件)

t=15247


d=new Date()
d.setSeconds(d.getSeconds()+t)
//まずここまで


//(1)環境によって全然表示が違うけどとにかく時刻を簡単に表示させたいのなら
date=d.toLocaleString()


//(2)モダンブラウザ向け(古いIEを気にしない)でその表示方法を貫くのなら
date=d.toISOString().slice(0,10).replace(/\-/g,"/")+" "+d.toISOString().slice(11,19)


//(3)いろんな環境でその表示を貫くのなら
date=d.getFullYear()+"/"+("0"+(d.getMonth()+1)).slice(-2)+"/"+("0"+d.getDate()).slice(-2)+" "+("0"+d.getHours()).slice(-2)+":"+("0"+d.getMinutes()).slice(-2)+":"+("0"+d.getSeconds()).slice(-2)
    • good
    • 0
この回答へのお礼

解答ありがとうございます。

うまくいきました。

時差が出たので下記のように修正しました。

大変助かりました。

d.setSeconds(d.getSeconds()+t+3600*9);

お礼日時:2012/12/29 06:39

かんたんなことを めんどうくさく かく。



var dateToStringJp =
 (function (map, zeroPadding) {
  var zp = [4,2,2, 2,2,2, 3];

  if (! Array.prototype.map)
   Array.prototype.map = map;
  
  return function (dateObj, type) {
   var d = dateObj ? dateObj: new Date;
   var p = [
    d.getFullYear (),
    d.getMonth () +1,
    d.getDate (),
    d.getHours (),
    d.getMinutes (),
    d.getSeconds (),
    d.getMilliseconds ()
    ];
   var rst = '';
   var s = [];

   switch (type) {
   case 1 :// yyy/mm/dd hh:mn:sc.mscd
    s = p.map (zeroPadding, zp);
    rst = [
     [s[0], s[1], s[2]].join ('/'),
     [s[3], s[4], s[5]].join (':'),
    ].join (' ') + '.' + s[6];
    break;
    
   default : // ????年??月??日
    s = p.map (zeroPadding, zp);
    rst = [s[0], '年', s[1], '月', s[2], '日'].join ('');
   }
   return rst;
  };
 }) (
   function (b, e) {
    var c = this.length;
    if (typeof b!= "function")
     throw new TypeError;
    for (var d = Array (c),a = 0; a<c; a++)
     a in this && (d[a] = b.call (e,this[a],a,this));
    return d;
   },
   function (num, i) {
    var zp = this[i];
    return ((new Array (zp)).join ('0') + num).slice (-zp);
   }
   );

//_______________________

alert (dateToStringJp ());
alert (dateToStringJp (null, 1));
alert (dateToStringJp (new Date (15247 + (+new Date)) , 1));
    • good
    • 0
この回答へのお礼

ご丁寧な解答ありがとうございます。

いろいろな方法で試してみます。

お礼日時:2013/01/06 19:36

すみません


2番の方法では+3600*9してください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!