जावास्क्रिप्ट तिथि करने के लिए अग्रणी शून्य जोड़ते हैं


437

मैंने इस स्क्रिप्ट को dd / mm / yyyy के प्रारूप में 10 दिनों के लिए अग्रिम तारीख की गणना करने के लिए बनाया है:

var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();

मुझे इन नियमों को स्क्रिप्ट में जोड़ने के तरीके के साथ दिन और महीने के घटक पर अग्रणी शून्य के साथ तारीख दिखाई देने की आवश्यकता है। मैं इसे काम करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकता।

if (MyDate.getMonth < 10)getMonth = '0' + getMonth;

तथा

if (MyDate.getDate <10)get.Date = '0' + getDate;

अगर कोई मुझे दिखा सकता है कि मुझे स्क्रिप्ट में कहां सम्मिलित करना है तो मैं वास्तव में सराहना करूंगा।


6
एक अच्छे सम्मेलन के रूप में, आपको अपने चर नामों में पहले अक्षर को कम करना चाहिए और वस्तुओं / प्रोटोटाइप के लिए ऊंट आवरण को आरक्षित करना चाहिए।
ज़्यकादेलिक

यदि YYYY-MM-DD प्रारूप स्वीकार्य है, तो यह बहुत अच्छा उत्तर होगा: stackoverflow.com/a/28431880/1717535
Fabien Snauwaert

जवाबों:


1352

इसे आज़माएं: http://jsfiddle.net/xA5B7/

var MyDate = new Date();
var MyDateString;

MyDate.setDate(MyDate.getDate() + 20);

MyDateString = ('0' + MyDate.getDate()).slice(-2) + '/'
             + ('0' + (MyDate.getMonth()+1)).slice(-2) + '/'
             + MyDate.getFullYear();

संपादित करें:

समझाने के लिए, .slice(-2)हमें स्ट्रिंग के अंतिम दो अक्षर देता है ।

तो कोई बात नहीं, हम "0"दिन या महीने में जोड़ सकते हैं , और बस आखिरी दो के लिए पूछ सकते हैं क्योंकि हम हमेशा वही दो हैं जो हम चाहते हैं।

तो अगर MyDate.getMonth()रिटर्न 9, यह होगा:

("0" + "9") // Giving us "09"

इसलिए .slice(-2)उस पर जोड़ने से हमें पिछले दो अक्षर मिलते हैं:

("0" + "9").slice(-2)
"09"

लेकिन अगर MyDate.getMonth()रिटर्न 10, यह होगा:

("0" + "10") // Giving us "010"

इसलिए जोड़ने .slice(-2)से हमें अंतिम दो अक्षर मिलते हैं, या:

("0" + "10").slice(-2)
"10"

27
Forked - date format YYYY-MM-DD jsfiddle.net/j6qJp/1 यह किसी के लिए उपयोगी हो सकता है। धन्यवाद
tomexx

3
क्या कोई समझा सकता है कि यह उस उत्तर से बेहतर क्यों है जो @Aleross नीचे प्रदान करता है? यह तुरंत स्पष्ट नहीं है कि यह पैड फ़ंक्शन के रूप में क्या करता है जो स्पष्ट रूप से स्पष्ट है।
क्लेडियो

2
यह उल्लेख करने के लिए नहीं कि आज इस उदाहरण ने मुझे 06/06/2014 के बजाय 26/06/2014 दिया
DazManCat

3
@DazManCat: यह वही है जो करना चाहिए। वर्तमान तिथि में 20 दिन जोड़कर कोड शुरू होता है। MyDate.setDate(MyDate.getDate() + 20);
कुकी राक्षस

3
@ n00b और @Phil कूपर, जावास्क्रिप्ट रूटीन के समय और बहिष्कार के बारे में चर्चा किए बिना त्रस्त हैं, मैंने पाया कि slice()स्वीकृत उत्तर में pad()तकनीक @Aleross की तकनीक की तुलना में 1 सेकंड की तेजी से लगभग 1/10 है। 1 मिलियन पुनरावृत्तियों। jsFiddle । "अपने पैसे का भुगतान, अपने लेने"।
कार्ल

105

यहां जावास्क्रिप्ट "नंबर" फ़ंक्शन का उपयोग करके मोज़िला डेवलपर नेटवर्क पर दिनांक ऑब्जेक्ट डॉक्स से एक उदाहरण है , बिना जावास्क्रिप्ट के नंबर प्रोटोटाइप का विस्तार करने के लिए। एक उदाहरण के रूप में वे जो आसान कार्य देते हैं

function pad(n){return n<10 ? '0'+n : n}

और नीचे इसका उपयोग संदर्भ में किया जा रहा है।

/* use a function for the exact format desired... */
function ISODateString(d){
    function pad(n){return n<10 ? '0'+n : n}
    return d.getUTCFullYear()+'-'
    + pad(d.getUTCMonth()+1)+'-'
    + pad(d.getUTCDate())+'T'
    + pad(d.getUTCHours())+':'
    + pad(d.getUTCMinutes())+':'
    + pad(d.getUTCSeconds())+'Z'
}

var d = new Date();
console.log(ISODateString(d)); // prints something like 2009-09-28T19:03:12Z

3
यह करने का बहुत अच्छा तरीका है। मुझे लगता है कि स्वीकृत उत्तर वास्तव में अच्छा है, लेकिन यह मेरी राय में भी साफ है
बिंके

1
इससे अनपेक्षित कीड़े पैदा हो सकते हैं क्योंकि यह <10 के लिए एक स्ट्रिंग आउटपुट करता है और> = 10 के लिए एक नंबर
डेविड फ्रगोली

@DavidFregoli, स्ट्रिंग फ़ंक्शंस के लिए वे सभी दिनांक एक स्ट्रिंग लौटाते हैं, इसलिए यदि आप एक स्ट्रिंग इनपुट करते हैं, padतो आउटपुट केवल तार करता है।
रोहड़ू

56

ऐसा करने का नया आधुनिक तरीका उपयोग करना है toLocaleDateString, क्योंकि यह न केवल आपको उचित स्थानीयकरण के साथ एक प्रारूप तैयार करने की अनुमति देता है, आप वांछित परिणाम को संग्रहीत करने के लिए प्रारूप विकल्प भी पास कर सकते हैं:

var date = new Date(2018, 2, 1);
var result = date.toLocaleDateString("en-GB", { // you can skip the first argument
  year: "numeric",
  month: "2-digit",
  day: "2-digit",
});
console.log(result);

जब आप पहला तर्क छोड़ते हैं, तो यह ब्राउज़र भाषा का पता लगाएगा, बजाय। वैकल्पिक रूप से, आप 2-digitवर्ष विकल्प पर भी उपयोग कर सकते हैं ।

यदि आपको IE10 जैसे पुराने ब्राउज़र का समर्थन करने की आवश्यकता नहीं है, तो यह काम करने का सबसे साफ तरीका है। IE10 और निचले संस्करण विकल्प तर्क को नहीं समझेंगे।

नोट: इसके अलावा, वहाँ भी है toLocaleTimeString, अगर आप एक तारीख के समय को स्थानीय बनाना या प्रारूपित करना चाहते हैं।


3
यह वही है जो मैं देख रहा था, धन्यवाद। यहाँ toLocaleDateString के लिए उपलब्ध विकल्पों के बारे में अधिक जानकारी: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
JoseLinares

1
@JoseLinares नमस्ते, इस लिंक को वापस दिनों में डालने के लिए धन्यवाद। मैंने सिर्फ आम परिदृश्यों के लिए समाधान को अधिक आकर्षक बनाने के लिए अपने उत्तर को बेहतर बनाने का निर्णय लिया, क्योंकि आप पहले तर्क को छोड़ सकते हैं और IE10 अब प्रासंगिक नहीं है। इसे ध्यान में रखते हुए, मैंने आपके उत्तर में अपना लिंक शामिल किया।
मार्टिन ब्रौन

@modiX, क्षमा करें, यह कोड में मेरी गलती थी और मैंने गलत तरीके से वर्णन लिया, हाँ लोकेशन (पहला चर) वैकल्पिक है
कन्हैया लाल

@ कन्हैयालाल चिंता न करें, गलतियाँ हो सकती हैं। मुझे केवल आश्चर्य हुआ कि 3 में से 2 समीक्षकों ने गलत संपादन को भी मंजूरी दे दी।
मार्टिन ब्रौन


30

आपके लिए भविष्य के लोग (ECMAScript 2017 और उससे आगे)

समाधान

"use strict"

const today = new Date()

const year = today.getFullYear()

const month = `${today.getMonth() + 1}`.padStart(2, "0")

const day = `${today.getDate()}`.padStart(2, "0")

const stringDate = [day, month, year].join("/") // 13/12/2017

explaination

String.prototype.padStart(targetLength[, padString])यथासंभव अधिक से अधिक कहते हैं padStringमें String.prototypeलक्ष्य इतना है कि लक्ष्य के नए लंबाई है targetLength

उदाहरण

"use strict"

let month = "9"

month = month.padStart(2, "0") // "09"

let byte = "00000100"

byte = byte.padStart(8, "0") // "00000100"

4
यह ES2017 या ES8 का हिस्सा है। इसलिए इसे "ES6 +" कहना गलत है क्योंकि यह ES6 और ES7 का हिस्सा नहीं है।
नोएल लेवलेरेस

1
यह तकनीकी रूप .padStart(2, '0')से होना चाहिए क्योंकि दूसरा पैरामीटर एक स्ट्रिंग है, हालांकि यह तब तक कोई फर्क नहीं पड़ेगा जब तक कि आप टाइपस्क्रिप्ट का उपयोग नहीं कर रहे हैं
bmaupin

आप सही हैं, मैं अपना उत्तर संपादित करूँगा।
अमीन NAIRI

11
Number.prototype.padZero= function(len){
 var s= String(this), c= '0';
 len= len || 2;
 while(s.length < len) s= c + s;
 return s;
}

//उपयोग में:

(function(){
 var myDate= new Date(), myDateString;
 myDate.setDate(myDate.getDate()+10);

 myDateString= [myDate.getDate().padZero(),
 (myDate.getMonth()+1).padZero(),
 myDate.getFullYear()].join('/');

 alert(myDateString);
})()

/*  value: (String)
09/09/2010
*/

10

मुझे ऐसा करने का सबसे छोटा तरीका मिला:

 MyDateString.replace(/(^|\D)(\d)(?!\d)/g, '$10$2');

सभी अकेला, एकल अंकों के लिए अग्रणी शून्य जोड़ देगा


मुझे यह समाधान पसंद है, क्या आप थोड़ा स्पष्ट कर सकते हैं कि वहां क्या होता है?
गोबलींस

7
var MyDate = new Date();
var MyDateString = '';
MyDate.setDate(MyDate.getDate());
var tempoMonth = (MyDate.getMonth()+1);
var tempoDate = (MyDate.getDate());
if (tempoMonth < 10) tempoMonth = '0' + tempoMonth;
if (tempoDate < 10) tempoDate = '0' + tempoDate;
MyDateString = tempoDate + '/' + tempoMonth + '/' + MyDate.getFullYear();

5

आप "यदि" कथन की तरह दिनांक को प्रारूपित करने के लिए टर्नरी ऑपरेटर का उपयोग कर सकते हैं।

उदाहरण के लिए:

var MyDate = new Date();
MyDate.setDate(MyDate.getDate()+10);
var MyDateString = (MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate()) + '/' + ((d.getMonth()+1) < 10 ? '0' + (d.getMonth()+1) : (d.getMonth()+1)) + '/' + MyDate.getFullYear();

इसलिए

(MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate())

एक स्टेटमेंट के समान होगा, जहां अगर getDate () 10 से कम मान लौटाता है, तो '0' + दिनांक लौटाएं, या 10 से अधिक होने पर दिनांक लौटाएं (क्योंकि हमें अग्रणी जोड़ने की आवश्यकता नहीं है 0)। महीने के लिए भी।

संपादित करें: भूल गए कि getMonth 0 से शुरू होता है, इसलिए इसके लिए खाते में +1 जोड़ा गया। बेशक आप यह भी कह सकते हैं कि d.getMonth () <9:, लेकिन मुझे लगा कि +1 का उपयोग करने से समझने में आसानी होगी।



5

sliceजावास्क्रिप्ट में उपयोग करके इस समस्या को हल करने के लिए एक और तरीका है ।

var d = new Date();
var datestring = d.getFullYear() + "-" + ("0"+(d.getMonth()+1)).slice(-2) +"-"+("0" + d.getDate()).slice(-2);

datestringआप के रूप में प्रारूप के साथ वापसी की तिथि की उम्मीद: 2019/09/01

एक अन्य दृष्टिकोण dateformatपुस्तकालय का उपयोग कर रहा है: https://github.com/felixge/node-dateformat


"जावास्क्रिप्ट" वर्तनी में ध्यान रखें।
तुलसी बॉर्क

3

अपने जीवन को आसान बनाने और प्रयोग Moment.js कुछ नमूना कोड:

var beginDateTime = moment()
  .format('DD-MM-YYYY HH:mm')
  .toString();

// Now will print 30-06-2015 17:55
console.log(beginDateTime);

4
moment.js -> एक अच्छा समाधान नहीं इसके 19.8k कोड को 0.3k आकार के समाधानों की तुलना में यहां पर बांधें।
मार्कोज़ेन

3
function formatDate(jsDate){
  // add leading zeroes to jsDate when days or months are < 10.. 
  // i.e.
  //     formatDate(new Date("1/3/2013")); 
  // returns
  //    "01/03/2103"
  ////////////////////
  return (jsDate.getDate()<10?("0"+jsDate.getDate()):jsDate.getDate()) + "/" + 
      ((jsDate.getMonth()+1)<10?("0"+(jsDate.getMonth()+1)):(jsDate.getMonth()+1)) + "/" + 
      jsDate.getFullYear();
}

3

आप प्रारूप दिनांक के लिए एक पैरामीटर के रूप में विकल्प प्रदान कर सकते हैं। पहला पैरामीटर लोकेल के लिए है जिसकी आपको आवश्यकता नहीं है और दूसरा विकल्प के लिए है। अधिक जानकारी के लिए https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString पर जाएं

var date = new Date(Date.UTC(2012, 1, 1, 3, 0, 0));
var options = { year: 'numeric', month: '2-digit', day: '2-digit' };
console.log(date.toLocaleDateString(undefined,options));

1
सुझाव के लिए धन्यवाद।
MJ55

2

मैंने एक फ़ंक्शन में इस प्रश्न का सही उत्तर लपेटा है जो कई अग्रणी शून्य को जोड़ सकता है लेकिन 1 शून्य को जोड़ने के लिए चूक है।

function zeroFill(nr, depth){
  depth = (depth === undefined)? 1 : depth;

  var zero = "0";
  for (var i = 0; i < depth; ++i) {
    zero += "0";
  }

  return (zero + nr).slice(-(depth + 1));
}

केवल अंकों और 2 अंकों से अधिक के साथ काम करने के लिए, यह भी एक दृष्टिकोण है:

function zeroFill(i) {
    return (i < 10 ? '0' : '') + i
  }

1

एक अन्य विकल्प, पैडिंग करने के लिए एक अंतर्निहित फ़ंक्शन का उपयोग करना (लेकिन परिणामस्वरूप काफी लंबा कोड!)।

myDateString = myDate.getDate().toLocaleString('en-US', {minimumIntegerDigits: 2})
  + '/' + (myDate.getMonth()+1).toLocaleString('en-US', {minimumIntegerDigits: 2})
  + '/' + myDate.getFullYear();

// '12/06/2017'

और एक, नियमित अभिव्यक्ति के साथ तार में हेरफेर:

var myDateString = myDate.toISOString().replace(/T.*/, '').replace(/-/g, '/');

// '2017/06/12'

लेकिन इस बात का ध्यान रखें कि साल की शुरुआत और अंत में दिन दिखाएंगे ।


इसे सबसे ज्यादा पसंद किया गया: myDate.getDate ()। toLocaleString ('एन-यूएस', {न्यूनतमइनटाइजर: 2})
मैक्स अलेक्जेंडर हन्ना

1

@ModiX उत्तर को जोड़ने पर, यह वही काम करता है ... जो खाली नहीं है

today.toLocaleDateString("default", {year: "numeric", month: "2-digit", day: "2-digit"})

1

यहां बहुत सरल उदाहरण है कि आप इस स्थिति को कैसे संभाल सकते हैं।

var mydate = new Date();

var month = (mydate.getMonth().toString().length < 2 ? "0"+mydate.getMonth().toString() :mydate.getMonth());

var date = (mydate.getDate().toString().length < 2 ? "0"+mydate.getDate().toString() :mydate.getDate());

var year = mydate.getFullYear();

console.log("Format Y-m-d : ",year+"-"+month+"-" + date);

console.log("Format Y/m/d : ",year+"/"+month+"/" + date);


0

निम्न का उद्देश्य कॉन्फ़िगरेशन निकालना, हुक लगाना Date.protoypeऔर कॉन्फ़िगरेशन लागू करना है।

मैंने Arrayसमय-समय पर स्टोर करने के लिए एक का उपयोग किया है और जब मैं push() thisएक Dateऑब्जेक्ट के रूप में करता हूं , तो यह मुझे पुनरावृति की लंबाई देता है। जब मैं पूरा हो जाता हूं, तो मैं मूल्य joinपर उपयोग कर सकता हूं return

यह बहुत तेजी से काम करने लगता है: 0.016ms

// Date protoype
Date.prototype.formatTime = function (options) {
    var i = 0,
        time = [],
        len = time.push(this.getHours(), this.getMinutes(), this.getSeconds());

    for (; i < len; i += 1) {
        var tick = time[i];
        time[i] = tick < 10 ? options.pad + tick : tick;
    }

    return time.join(options.separator);
};

// Setup output
var cfg = {
    fieldClock: "#fieldClock",
    options: {
        pad: "0",
        separator: ":",
        tick: 1000
    }
};

// Define functionality
function startTime() {
    var clock = $(cfg.fieldClock),
        now = new Date().formatTime(cfg.options);

    clock.val(now);
    setTimeout(startTime, cfg.options.tick);
}

// Run once
startTime();

डेमो: http://jsfiddle.net/tive/U4MZ3/


0

मैं क्या करूंगा, अपनी स्वयं की कस्टम तिथि सहायक बनाऊंगा जो इस प्रकार दिखती है:

var DateHelper = {
    addDays : function(aDate, numberOfDays) {
        aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
        return aDate;                                  // Return the date
    },
    format : function format(date) {
        return [
           ("0" + date.getDate()).slice(-2),           // Get day and pad it with zeroes
           ("0" + (date.getMonth()+1)).slice(-2),      // Get month and pad it with zeroes
           date.getFullYear()                          // Get full year
        ].join('/');                                   // Glue the pieces together
    }
}

// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));

( इस फिडेल को भी देखें )


0

एक अग्रणी शून्य - जहां जरूरत हो - और स्ट्रिंग के रूप में अपनी पसंद के सीमांकक का उपयोग करके अनुमति देने के लिए कुछ पैडिंग जोड़ें।

Number.prototype.padLeft = function(base,chr){
        var  len = (String(base || 10).length - String(this).length)+1;
        return len > 0? new Array(len).join(chr || '0')+this : this;
    }

var d = new Date(my_date);
var dformatted = [(d.getMonth()+1).padLeft(), d.getDate().padLeft(), d.getFullYear()].join('/');

0

जैसा कि @ जॉन हेंकेल का सुझाव है, टोससट्रिंग () पद्धति का उपयोग करना शुरू करना चीजों को आसान बनाता है

const dateString = new Date().toISOString().split('-');
const year = dateString[0];
const month = dateString[1];
const day = dateString[2].split('T')[0];

console.log(`${year}-${month}-${day}`);


0
 let date = new Date();
 let dd = date.getDate();//day of month

 let mm = date.getMonth();// month
 let yyyy = date.getFullYear();//day of week
 if (dd < 10) {//if less then 10 add a leading zero
     dd = "0" + dd;
   }
 if (mm < 10) {
    mm = "0" + mm;//if less then 10 add a leading zero
  }

आप संक्षेप में यह भी बता सकते हैं कि आप क्या प्रयास करते हैं।
शिव कुमार बघेल

0

मूल फ़ंक्शन के लिए यह प्रयास करें, कोई लाइब्रेरी आवश्यक नहीं है

Date.prototype.CustomformatDate = function() {
 var tmp = new Date(this.valueOf());
 var mm = tmp.getMonth() + 1;
 if (mm < 10) mm = "0" + mm;
 var dd = tmp.getDate();
 if (dd < 10) dd = "0" + dd;
 return mm + "/" + dd + "/" + tmp.getFullYear();
};

0
function pad(value) {
    return value.tostring().padstart(2, 0);
}

let d = new date();
console.log(d);
console.log(`${d.getfullyear()}-${pad(d.getmonth() + 1)}-${pad(d.getdate())}t${pad(d.gethours())}:${pad(d.getminutes())}:${pad(d.getseconds())}`);

2
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन समस्या को हल करने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करता है और यह समस्या को हल करता है ताकि उत्तर के दीर्घकालिक मूल्य में सुधार हो सके।
लियोपल

0

आप String.slice () का उपयोग कर सकते हैं, जो एक स्ट्रिंग के एक खंड को निकालता है और मूल स्ट्रिंग को संशोधित किए बिना इसे एक नए स्ट्रिंग के रूप में लौटाता है:

const currentDate = new Date().toISOString().slice(0, 10) // 2020-04-16

या आप इस तिथि को प्रारूपित करने के लिए एक lib जैसे Moment.js का उपयोग कर सकते हैं :

const moment = require("moment")
const currentDate = moment().format("YYYY-MM-DD") // 2020-04-16
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.