imasara2script
WSHやHTAなどのプログラムサンプルの公開用ブログ
2017年4月6日木曜日
時間の長さに応じた単位をつけた文字列を返す関数(詳細表示版)
用途・目的
ミリ秒単位の数値を、値の大きさに合わせて「1.5分」とか「2.1時間」などのように表示する関数を先日記事にしましたが、「○ヵ月○日○時間○分○秒」のような表示が欲しいケースもあるので、それに対応する関数を作成しました。
ソース
time詳細=function(ms){ var arr=[], 単位=1000, 単位_, f=function(閾値,str){var 余り=ms % (単位_=閾値); ms -= 余り; arr.unshift(桁(Math.round(余り/単位), 2)+str); 単位=単位_ } if(ms){ f(単位*60 ,'秒' ) } if(ms){ f(単位*60 ,'分' ) } if(ms){ f(単位*24 ,'時間') } if(ms){ f(単位*31 ,'日' ) } if(ms){ f(単位*12,'ヵ月') } if(ms){ arr.unshift(ms / 単位_ + '年') } return arr.join('') }
サンプル
桁=function(num,桁数){ var str0=num+'', str1=Array(桁数+1).join(0)+num return (桁数 < str0.length) ? str0 : str1.slice(str1.length-桁数,str1.length) } time詳細=function(ms){ var arr=[], 単位=1000, 単位_, f=function(閾値,str){var 余り=ms % (単位_=閾値); ms -= 余り; arr.unshift(桁(Math.round(余り/単位), 2)+str); 単位=単位_ } if(ms){ f(単位*60 ,'秒' ) } if(ms){ f(単位*60 ,'分' ) } if(ms){ f(単位*24 ,'時間') } if(ms){ f(単位*31 ,'日' ) } if(ms){ f(単位*12,'ヵ月') } if(ms){ arr.unshift(ms / 単位_ + '年') } return arr.join('') } confirm(time詳細(1000 * 60 * 60 * 24 * 31 * 14 + 1000 * 60 * 30))
動作テスト
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿