2017-02-19 11 views
0

私はこの優れた機能をHH:MM:SSに使用していますが、HH:MMだけを切り捨てて丸めたものを返すように修正するにはどうすればいいですか?JavaScriptを秒単位でHH-MMに変換しますか?

function formatSeconds(seconds) 
{ 
    var date = new Date(1970,0,1); 
    date.setSeconds(seconds); 
    return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, "$1"); 
} 
+0

サードパーティライブラリを使用しますか? MomentJSは時間と日付を処理するのに適しています。 –

+0

秒が1日を超える場合は、間違った値が返されることに注意してください。 – RobG

答えて

0

Date to format secondsを使用する際の問題は、24時間を超える時間と日付の変化を処理できないことです。必要に応じて単純に値を再フォーマット:

function formatSeconds(seconds) { 
 
    function z(n) {return (n < 10 ? '0' : '') + n;} 
 
    return z(seconds/3600 | 0) + ':' + z((seconds % 3600)/60 | 0) 
 
} 
 

 
// Some examples 
 
[0,1,61,3600,3660,765467].forEach(function (seconds) { 
 
    console.log(seconds + ' -> ' + formatSeconds(seconds)) 
 
});

ノー日付、ノー正規表現、これまでのECMAScriptをサポートするすべてのホストではありませんライブラリ、依存関係のないと作品。

3
function formatSeconds(seconds) 
{ 
    var date = new Date(1970,0,1); 
    date.setSeconds(seconds); 
    return date.toTimeString().replace(/.*?(\d{2}:\d{2}).*/, "$1"); 
} 

最後\d{2}を削除し、理想的な方法はmoment.jsを使用することですが、あなたはカスタム関数を使用したい場合、あなたはこのような何かを試すことができますが最初*

0

?を追加します。

function formatSeconds(milliseconds, format) { 
 
    var dateObj = new Date(milliseconds); 
 

 
    function getDoubleDigits(value){ 
 
    return ("0" + value).slice(-2) 
 
    } 
 
    
 
    var o = { 
 
    DD: getDoubleDigits(dateObj.getDate()), 
 
    MM: getDoubleDigits(dateObj.getMonth() + 1), 
 
    YY: dateObj.getYear(), 
 
    YYYY: dateObj.getFullYear(), 
 
    hh: getDoubleDigits(dateObj.getHours()), 
 
    mm: getDoubleDigits(dateObj.getMinutes()), 
 
    ss: getDoubleDigits(dateObj.getSeconds()) 
 
    } 
 
    
 
    var dilimeter = format.match(/[^\w]/)[0]; 
 
    return format.split(dilimeter).map(function(f){ 
 
    return o[f]; 
 
    }).join(dilimeter); 
 
} 
 

 
var today = new Date(); 
 
console.log(formatSeconds(+today, "DD-MM-YYYY")) 
 
console.log(formatSeconds(+today, "hh:mm"))

+0

moment.jsが「理想」なのはなぜですか?必要なフォーマットを生成する関数は、わずか2行のコードです。 – RobG

+0

@RobGそれは必要以上に多くを処理するためです。 OPは時間を扱っているので、彼はこの機能を使用します。その後、別のフォーマットが必要になった場合、別の機能を記述します。私はジェネリック関数を作ろうとしましたが、瞬間はすでに日付の問題を解決しています。はい、この瞬間だけを使用しても、残念ですが、提案として、私は瞬間datetime操作の方が良いと言うでしょう – Rajesh

関連する問題