getMinutes()0-9-2桁の数字を表示する方法


136
var date = "2012-01-18T16:03";
var date = new Date(date);

console.log(date.getMinutes());
console.log(date.getMinutes().length)

これは3を返します。

  1. 「03」を返すようにするにはどうすればよいですか?
  2. なぜ.length未定義を返すのですか?

私はこれを試しましたが、うまくいきませんでした:

もしstrlen == 1その後、num = ('0' + num);


合計すると、戻り値.getMinutes()は整数であり、整数.lengthからはアクセスできません。これを行うには(日付を扱う場合はお勧めしません)、数値を文字列に解析してから長さを確認します。例:date.getMinutes().toString().length
ViniciusPires 2013

回答:


276
var date = new Date("2012-01-18T16:03");

console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );

2
これは<10?'0':''どういう意味ですか?
user1063287 2016年

@ user1063287それはインラインif if elseステートメント
Aryeh Armon

5
@ user1063287それは意味:「getMinutes()空の文字列を返し、大きい場合は、0を返し、10未満である場合。
マイケル・ジョバンニPumo

@ user1063287は、ここを参照してくださいdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
shlgug

(condition?true:false)PHPでは、JSでtrueステートメント(condition?:false)を省略できます(condition || false)
Ternary

203

いいね、これらの答えは素晴らしいものではなく、トップの投稿も気に入る。ここで、y-go、クロスブラウザー、およびよりクリーンなint / string変換です。さらに、私のアドバイスはdate = Date(...)、言語の大文字と小文字の区別に大きく依存しているようなコードで変数名 'date'を使用しないことです(動作しますが、異なるルールで異なる言語でサーバー/ブラウザーコードを操作している場合は危険です)。 。したがって、var内のjavascript Dateを想定しcurrent_dateます。

mins = ('0'+current_date.getMinutes()).slice(-2);

この手法では(slice(-2))、文字列値の先頭に「0」の右端2文字を付加しますgetMinutes()。そう:

"0"+"12" -> "012".slice(-2) -> "12"

そして

"0"+"1" -> "01".slice(-2) -> "01"

7
エレガントなソリューション
Oldenborg 2014

1
slice(-2)の使用は直感に反しますが、私はそれが好きです。
ChrisFox 2017年

33

もう1つの短い方法は、以下を使用して分を先行ゼロで埋めることです。

String(date.getMinutes()).padStart(2, "0");

意味:文字列の長さを2文字にします。charがない場合は0、この位置に設定します。

str.padStart(targetLength、padString)のドキュメントを参照してください


18

日付をフォーマットするエレガントなES6関数hh:mm:ss

const leadingZero = (num) => `0${num}`.slice(-2);

const formatTime = (date) =>
  [date.getHours(), date.getMinutes(), date.getSeconds()]
  .map(leadingZero)
  .join(':');

12

できれば、問題をもっときちんと解決したいと思います。受け入れられた答えはとても良いです。しかし、私はこのようにしていたでしょう。

Date.prototype.getFullMinutes = function () {
   if (this.getMinutes() < 10) {
       return '0' + this.getMinutes();
   }
   return this.getMinutes();
};

これを使用したい場合。

console.log(date.getFullMinutes());

10

私は提案します:

var minutes = data.getMinutes();
minutes = minutes > 9 ? minutes : '0' + minutes;

1つの関数呼び出しが少なくなります。パフォーマンスについて考えることは常に良いことです。それも短いです。


4

10未満であるかどうかを確認する必要があります。これは数値であり文字列ではないため、長さを探していません。


4

別のオプション:

var dateTime = new Date();
var minutesTwoDigitsWithLeadingZero = ("0" + dateTime.getMinutes()).substr(-2);

私はこのソリューションが好きですが、IE8以前のバージョンでは負の数をサポートしていないようですsubstrw3schools.com/jsref/jsref_substr.asp
GtEx


3

.lengthgetMinutes文字列ではなく数値を返すため、未定義です。数値にはlengthプロパティがありません。あなたができる

var m = "" + date.getMinutes();

その文字列を作るために、そして、(あなたがチェックしたい長さをチェックしlength === 1、0ではありません)。


3

数値には長さはありませんが、数値を文字列に簡単に変換し、長さを確認して、必要に応じて0を前に付けることができます。

var strMonth = '' + date.getMinutes();
if(strMonth.length == 1){
  strMonth = '0' + strMonth;
}

3

ES6の回答がここに表示されないので、StandardJSフォーマットを使用して回答を追加します

// ES6 String formatting example
const time = new Date()
const tempMinutes = new Date.getMinutes()
const minutes = (tempMinutes < 10) ? `0${tempMinutes}` : tempMinutes

3

文字列として値が必要になると思います。以下のコードを使用できます。常に2桁の分が文字列として返されます。

var date = new Date(date);
var min = date.getMinutes();

if (min < 10) {
min = '0' + min;
} else {
min = min + '';
}
console.log(min);

お役に立てれば。


1

私は通常、次のコードを使用します。

var start = new Date(timestamp),
    startMinutes = start.getMinutes() < 10 ? '0' + start.getMinutes() : start.getMinutes();

これは、@ ogurが受け付けた回答と非常に似ていますが、0が不要な場合は空の文字列を連結しません。よく分からない。それを行うためのちょうど別の方法!


1

あなたはモーメントjsを使うことができます:

moment(date).format('mm')

例: moment('2019-10-29T21:08').format('mm') ==> 08

それが誰かを助けることを願って


とにかく瞬間を使用しているときはとてもいいです、ありがとう:-)
Nadine

0
$(".min").append( (date.getMinutes()<10?'0':'') + date.getMinutes() );

JSの初心者なので、これは非常に役に立ちました。これは、この問題を最も新しく見たPPLでも、「class = "min」というdivに表示する方法です。

それが誰かを助けることを願って


0

これはどう?わたしにはできる!:)

var d = new Date();
var minutes = d.getMinutes().toString().replace(/^(\d)$/, '0$1');

0

2桁の分または時間を取得する別のオプション。

var date = new Date("2012-01-18T16:03");

var minutes = date.toTimeString().slice(3, 5); 
var hours   = date.toTimeString().slice(0, 2); 


-2

プロジェクトでAngularJSを使用している場合は、$ filterを挿入して、次のように使用します。

$filter('date')(value, 'HH:mm')

テンプレートで出力をフォーマットすることもできます。フィルターの詳細については、こちらをご覧ください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.