2016-08-26 5 views
7

使用している場合は場合:その前にゼロとJavaScriptの表示時間未満では10

Date.toLocaleTimeString() 

は、それが01:42:35 PM代わりの1:42:35 PMを表示させる方法はありますか?

私はこれに追加しようとしている:

Date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit', second: '2-digit'}) 

けど(それは10の後でなければ)それはまだ唯一の桁の時間を生成します。

+0

* Date.toLocaleTimeString *はありません。[* Date.prototype.toLocaleTimeString *](http://ecma-international.org/ecma-402/3.0/index.html#sup-date.prototype)があります。 tolocaletimestring)しかし、。これは国際化APIの一部であり、使用されているすべてのブラウザでサポートされていません。 – RobG

答えて

3

私の読みが正しい場合、relevant specによると、これは意図的なようです。

さもなければ
  • fが "2桁" である場合、次いで
    • FVがFormatNumber関数(NF2、V)とします。
    • fvの長さプロパティが2より大きい場合は、最後の2文字を含むfv の部分文字列をfvとします。

それがそのように指定されますが、そこにそれがある理由を私は理解できません。ゼロパディングをしたいのであれば、それを自分で前置する必要があるようです。

+0

答えではない私は笑を望んでいたが、そうそうだ。それを見つけてくれてありがとう。私の検索のすべてが何も表示されませんでした。 – rjbogz

0

それは私がまたplunkerを添付しています私

var datelocal = new Date(2016, 01, 01, 1, 1, 1).toLocaleTimeString(navigator.language, { 
hour: '2-digit', 
minute: '2-digit', 
second: '2-digit' 
}); 

のために、このように働いていました。

:Dateメソッドに日付パラメータを渡す代わりに、新しいDate()メソッドを使用して現在の日付を取得する必要があります。

+0

はい、私はそれをやっています。私は単純化のために投稿しました。それでも2桁の時間は出ません。 – rjbogz

+0

プランナーのボタンを押すと、「1:01:01 AM」と表示されます。何を手に入れますか?どのブラウザを使用していますか? – recursive

0

このような状況でDate.prototype.toLocaleTimeStringまたは同様の関数を使用する代わりに、私はJavaScriptプロジェクトでMoment.jsを使用する傾向があります。 Moment.jsは、解析、検証、操作、およびdisplayの日付のために特別に設計されたJavaScriptライブラリです。あなたが記述した形式で時間の文字列を取得するには、次のように使用できます。

var s = moment().format('hh:mm:ss A'); 
console.log(s); 

これは現在の日付を使用します。あなたが別の日付を使用する場合は、あなたも、そうすることができます:それはあなた自身のゼロパディングおよび他の類似のものを行うための手間を節約できます

var s = moment(new Date(2016, 8, 19, 1, 10)).format('hh:mm:ss A'); 
console.log(s); 

関連する問題