getMinutes () 0-9 - दो अंकों की संख्या कैसे प्रदर्शित करें?


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

जवाबों:


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

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

2
इसका क्या <10?'0':''मतलब है?
user1063287

@ user1063287 यह एक इनलाइन है अगर किसी और बयान
Aryeh Armon

5
@ user1063287 इसका अर्थ है: "अगर गेटमिनुट्स () 10 से कम है, तो 0 लौटाएं, यदि अधिक हो, तो एक खाली स्ट्रिंग लौटें।
माइकल जियोवानी पुमो

@ user1063287 यहाँ पर देखें। developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
shlgug

(हालत? सच: असत्य) PHP में आप सही कथन (शर्त ?: असत्य) को जेएस में छोड़ सकते हैं, तब आप उपयोग करेंगे (स्थिति || असत्य) Ternary operator en.wikipedia.org/wiki/Ternary_operation
llange

203

ये जवाब शानदार नहीं हैं, यहां तक ​​कि शीर्ष पद तक भी पहुंच नहीं है। यहाँ y'go, क्रॉस-ब्राउज़र और क्लीनर इंट / स्ट्रिंग रूपांतरण। इसके अलावा मेरी सलाह कोड के साथ एक चर नाम 'तारीख' का उपयोग नहीं करती है जैसे date = Date(...)आप भाषा के मामले संवेदनशीलता पर बहुत अधिक भरोसा कर रहे हैं (यह काम करता है, लेकिन जोखिम भरा होता है जब आप सर्वर / ब्राउज़र कोड के साथ विभिन्न भाषाओं में अलग-अलग नियमों के साथ काम कर रहे होते हैं) । तो जावास्क्रिप्ट तिथि को एक var में मानकर 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
सुरुचिपूर्ण समाधान
ओल्डेनबॉर्ग

1
स्लाइस (-2) का उपयोग प्रति-सहज है, लेकिन मुझे यह पसंद है।
क्रिसफॉक्स

33

एक और छोटा तरीका है मिनटों को एक प्रमुख शून्य का उपयोग करके भरना:

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

अर्थ: स्ट्रिंग को दो वर्ण लंबा करें, यदि कोई चार्ट गायब है तो 0इस स्थिति में सेट करें।

डॉक्स को str.padStart (लक्ष्यप्रकाश, पैडस्ट्रिंग) पर देखें


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;

यह एक फ़ंक्शन कॉल कम है। प्रदर्शन के बारे में सोचना हमेशा अच्छा होता है। यह छोटा भी है;


4

आपको यह जांचना चाहिए कि क्या यह 10 से कम है ... इसकी लंबाई की तलाश नहीं है, क्योंकि यह एक संख्या है और स्ट्रिंग नहीं है


4

एक अन्य विकल्प:

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

मुझे यह समाधान पसंद है, लेकिन ऐसा लगता है कि IE8 और पहले के संस्करण इसके लिए नकारात्मक संख्याओं का समर्थन नहीं करते हैं substrw3schools.com/jsref/jsref_substr.asp
GtEx


3

.lengthअपरिभाषित है क्योंकि getMinutesएक संख्या लौट रही है, एक स्ट्रिंग नहीं। संख्या में कोई lengthगुण नहीं है । तुम यह कर सकते थे

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

इसे एक स्ट्रिंग बनाने के लिए, फिर लंबाई जांचें (आप length === 10 नहीं, के लिए जांचना चाहेंगे )।


3

नंबरों की लंबाई नहीं है, लेकिन आप आसानी से संख्या को स्ट्रिंग में बदल सकते हैं, लंबाई की जांच कर सकते हैं और फिर आवश्यक होने पर 0 प्रीपेंड कर सकते हैं:

var strMonth = '' + date.getMinutes ();
अगर (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

मुझे लगता है कि आपको स्ट्रिंग के रूप में मूल्य की आवश्यकता होगी। आप नीचे दिए गए कोड का उपयोग कर सकते हैं। यह हमेशा आपको स्ट्रिंग के रूप में दो अंकों का मिनट देगा।

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

आशा है कि यह किसी की मदद करता है


बहुत अच्छा है जब कोई भी पल का उपयोग कर रहा है, तो धन्यवाद :-)
नादीन

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

जेएस के लिए नया इसलिए यह सबसे अधिक पीपीएल था जो इस संभावित नए को भी देखने में बहुत मददगार था इसलिए मैंने इसे "वर्ग =" मिनट "नामक div में दिखाने के लिए प्राप्त किया।

आशा है कि यह किसी की मदद करता है


0

इस बारे में कैसा है? इससे मेरा काम बनता है! :)

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

0

एक और विकल्प दो अंकों का मिनट या घंटे पाने का।

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('date')(value, 'HH:mm')

आप खाके में आउटपुट को प्रारूपित कर सकते हैं, यहाँ फ़िल्टर पर अधिक ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.