2017-10-26 8 views
1

moment.jsを使用して、距離/速度から計算された日付時間を処理しています。私もmoment duration format pluginを使用しています。 Iは、moment.durationに値を渡し、次にフォーマットするときには、値の一部は、2つの以上の数字であり、すなわち私の瞬間のjs期間の値を2桁に制限するにはどうすればよいですか?

39:3452:98762 

これはHH:mm:ssとして正しくフォーマットたいです。ここに私のコードです。

var point1Time = 19.188019795; 
var d1 = moment.duration(point1Time, 'hours'); 

var d1Hours = d1.format('HH'); 
var d1Mins = d1.format('mm', {forceLength: true }); 
var d1Secs = d1.format('ss', {forceLength: true }); 

あなたは(私はこの例のために数として入力した)point1Timeはマイル/スピードで、私はその後、hoursdurationようmomentにこの値を渡す見ることができるように。その後、formatを使用してHH:mm:ssを分けようとします。返される値は、d1Hours: 19,d1Mins: 1151d1Secs: 69076のようなものです。

forceLengthを追加すると数字が2にしかならないと思っていましたが、その制限をどこで定義するのかわからないためうまくいきませんでした。

誰でもこれを手助けできますか?あなたは秒に時間を変換することができ

答えて

1

したい形式を見つけるのは簡単です。私はあなたがminutes()seconds()の出力が必要だと思いながら

d1.format('mm')d1.format('ss')asSecondsasMinutesの出力を与えます。ここで

ライブのサンプル:

var point1Time = 19.188019795; 
 
var d1 = moment.duration(point1Time, 'hours'); 
 

 
console.log(d1.format('HH:mm:ss')); 
 

 
console.log(d1.minutes(), d1.asMinutes()); 
 
console.log(d1.seconds(), d1.asSeconds());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>

+1

これは完璧であり、私が探していたまさに、ありがとうございました。 – Yanayaya

0

は、それはあなたが所望の出力を得るためにformat()方法でテンプレートとして使用することができます'HH:mm:ss'

var d1 = moment.duration(point1Time, 'hours'); 
var asSecs = d1.asSeconds() 

var HHMMSS = secondsToHHMMSS(asSecs) 


function pad(num) { 
    return ("0"+num).slice(-2); 
} 

function secondsToHHMMSS(secs) { 
    var hours = Math.floor(secs/3600); 
    secs = secs%3600; 
    var minutes = Math.floor(secs/60); 
    secs = secs%60; 
    return pad(hours)+":"+pad(minutes)+":"+pad(secs); 
} 
関連する問題