2016-11-09 13 views
0

私は軍用時間である24時間の時間を通常の12/12時間に変換する必要があります。私の変数をmoment.jsを使用して12/12時間形式に変換します

nextArrivalFinal2 = ((hour > 0 ? hour + ":" + (min < 10 ? "0" : "") : "") + min + ":" + (sec < 10 ? "0" : "") + sec); 
console.log("nextArrival2", typeof nextArrivalFinal2) 
console.log("nextArrival2", nextArrivalFinal2) 

var convertedDate = moment(new Date(nextArrivalFinal2)); 
console.log('converted1', convertedDate) 
console.log('converted', moment(convertedDate).format("hh:mm:ss")); 

nextArrivalFinal2HH:MM:ss形式の文字列として時刻を表示します。しかし、それを瞬間jsに接続すると、それはinvalid dateだと言います。

+1

あなたはなぜあなたは日付の詐欺を使用している、moment.jsを使用している場合、文字列を解析するための構造体?解析にはmoment.jsを使用します(フォーマットを教えてください)。 24時間形式は、軍以外の多くの組織や個人によって使用されています。 ;-) – RobG

+2

'新しい日付(" 11:22:33 ")'は無効です。有効な日付には、日、月、年が含まれている必要があります。 – jagzviruz

答えて

2

あなたはmoment.jsとの時間を解析していない、ライン:

var convertedDate = moment(new Date(nextArrivalFinal2)); 

は「午後01時33分12秒」のような文字列を解析するために、日付のコンストラクタを使用している、おそらく無効な日付を返します。すべての実装で(そうでない場合は、期待どおりのものが返されます)。

文字列を解析して形式を指定するには、moment.jsを使用します。

var convertedDate = moment(nextArrivalFinal2, 'H:mm:ss')); 

は今、あなたのようにちょうど時間を取得することができます:

:あなたが望むすべてが12時間の時間として再フォーマット24時間の時間であれば

convertedDate().format('h:mm:ss a'); 

しかし、あなただけのシンプルな機能を必要とします

// 13:33:12 
 
/* Convert a time string in 24 hour format to 
 
** 12 hour format 
 
** @param {string} time - e.g. 13:33:12 
 
** @returns {sgtring} same time in 12 hour format, e.g. 1:33:12pm 
 
*/ 
 
function to12hour(time) { 
 
    var b = time.split(':'); 
 
    return ((b[0]%12) || 12) + ':' + b[1] + ':' + b[2] + (b[0] > 12? 'pm' : 'am'); 
 
} 
 

 
['13:33:12','02:15:21'].forEach(function(time) { 
 
    console.log(time + ' => ' + to12hour(time)); 
 
});

関連する問題