- ベストアンサー
デジタル時計の表示形式を変更したい
- デジタル時計の表示形式を変更する方法を探しています。
- 現在の表示形式は、年/月/日/時:分:秒:ミリ秒ですが、年/月/日/時:分:秒の形式にしたいです。
- 既存のスクリプトでは、静止テキストとして「/」と「:」が挟まれて表示されていますが、すべてのデータを二桁に表示するために修正したいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
他のサイト(JavaScript や ActionScript系サイト)などのように普通に考えると, こう↓ではないでしょうか。 ------------------------------------------- var now:Date; var h:Number, m:Number, s:Number, l:Number, d:Number, o:Number, p:Number; this.onEnterFrame = function() { now = new Date(); d = now.getFullYear(); o = now.getUTCMonth()+1; p = now.getUTCDate(); h = now.getHours(); m = now.getMinutes(); s = now.getSeconds(); l = now.getMilliseconds(); // // ↓ココから下を変更↓ date.text = d.toString().substr(2, 2); if (o<=9) { mon.text = "0"+o; } else { mon.text = o; } if (p<=9) { day.text = "0"+p; } else { day.text = p; } if (h<=9) { Hours.text = "0"+h; } else { Hours.text = h; } if (m<=9) { Minute.text = "0"+m; } else { Minute.text = m; } if (s<=9) { Seconds.text = "0"+s; } else { Seconds.text = s; } // 結局コレ↓はどうしたいのかわかりません。 mini.text = l; }; ------------------------------------------- 上のような感じのはよく見ます。 得られた数が 9 以下であれば,前に "0" を付けるというものです。 すごく一般的で,私は今のところこのパターンしか見たことがありません。 もちろん, 変数名やテキストのインスタンス名に, o,p,h,s,m… と付けるのではなく, date0,date1,date2,date3… などと連番で付けておくと, 長い長い if 文は, for文で短くできますが, 人間が見るとわかりにくくなるので,これはどちらでも良いと思います。 しかし! 今回のご質問でもっと単純な考え方を閃きました。 ------------------------------------------- var now:Date; var h:Number, m:Number, s:Number, l:Number, d:Number, o:Number, p:Number; this.onEnterFrame = function() { now = new Date(); d = now.getFullYear(); o = now.getUTCMonth()+1; p = now.getUTCDate(); h = now.getHours(); m = now.getMinutes(); s = now.getSeconds(); l = now.getMilliseconds(); // // ↓ココから下を変更↓ date.text = d.toString().substr(-2, 2); mon.text = ("0"+o).substr(-2, 2); day.text = ("0"+p).substr(-2, 2); Hours.text = ("0"+h).substr(-2, 2); Minute.text = ("0"+m).substr(-2, 2); Seconds.text = ("0"+s).substr(-2, 2); // 結局コレ↓はどうしたいのかわかりません。 mini.text = l; }; ------------------------------------------- こうすれば,鬱陶しい if文が不要になります。 ちょっとした発明かもしれません。 (発明でないかもしれません。よくわかりません。) 1桁でも2桁でも何でも良いから, 強制的に前に "0" を付けて, 下2桁から2文字を取ってくるという方法です。 .substr(-2, 2); -2 は 最後から2文字目,2はそこから2文字 という意味です。 これで良いのではないでしょうか。 他で見たことがないので, どこかに落ち度があるかもしれませんが, おそらくこれで行けますよ。 ※ // 結局コレ↓はどうしたいのかわかりません。 mini.text = l; は,どうしたいのかよくわかりません。 上のことから考えてみてください。
お礼
まずmini.text = l;は getmillisecondsでミリ秒を取得していた名残です。 うっかり削除するのを忘れていました。混乱させてしまい申し訳ありません。 そして肝心のスクリプトなのですがバッチリでした。 一桁の情報は一文字しか含んでいないという当たり前の事なのに 下二桁を得るというやり方は考えもしていなかったので こんなにスッキリ書いておられる事に本当に驚いています。 本当に助かりました。ありがとうございました。