मुझे 2 अंकों के प्रारूप में जावास्क्रिप्ट का महीना और तारीख कैसे मिलेगी?


332

जब हम कॉल करते हैं getMonth()और ऑब्जेक्ट getDate()पर date, हम प्राप्त करेंगे single digit number। उदाहरण के लिए :

के लिए january, यह प्रदर्शित करता है 1, लेकिन मुझे इसे प्रदर्शित करने की आवश्यकता है 01। उसको कैसे करे?



जवाबों:


811
("0" + this.getDate()).slice(-2)

दिनांक के लिए, और समान:

("0" + (this.getMonth() + 1)).slice(-2)

महीने के लिए।


86
कूल, लेकिन: function addZ(n){return n<10? '0'+n:''+n;}थोड़ा अधिक सामान्य है।
रॉबजी

9
स्लाइस चतुर है, लेकिन यह एक साधारण तुलना की तुलना में बहुत धीमी है: jsperf.com/slice-vs-comparison
dak

30
@ दक: और वह वास्तविक रूप से कब मायने रखता है? मुझे संदेह है कि आप महीने के हजारों बार एक दूसरे की गणना कर रहे हैं।
साशा चेदिगोव

2
@ KasperHoldum– getMonthऔर getDateनंबर लौटाएँ , तार नहीं। और अगर स्ट्रिंग्स के साथ संगतता की आवश्यकता है, तो '0' + Number(n)काम करेंगे।
RobG

9
@ साशा चेदिगोव सुनिश्चित करें कि आप महीने के हजारों बार एक दूसरे की गणना कर सकते हैं, खासकर यदि आप छंटनी कर रहे हैं
Dex25

87

यदि आप "YYYY-MM-DDTHH: mm: ss" जैसे प्रारूप चाहते हैं, तो यह जल्दी हो सकता है:

var date = new Date().toISOString().substr(0, 19);
// toISOString() will give you YYYY-MM-DDTHH:mm:ss.sssZ

या आमतौर पर इस्तेमाल किया जाने वाला MySQL डेटाइम फॉर्मेट "YYYY-MM-DD HH: mm: ss":

var date2 = new Date().toISOString().substr(0, 19).replace('T', ' ');

आशा है कि ये आपकी मदद करेगा


1
यह सबसे कठिन समाधान है जो मैं भर में आया हूं। केवल यहाँ मुद्दा टाइमज़ोन ऑफसेट का है।
प्रार्थना

3
टाइमज़ोन ऑफसेट का कुछ इस तरह से ध्यान रखा जा सकता है: var date = new Date (नई तारीख ()। GetTime () - Date ()। GetTimezoneOffset () * 60 * 1000) .toISOString ()। Substr (0,19)। .replace ('T', '');
प्रार्थना

प्रार्थना, आपका कोड मेरे लिए काम करता है, लेकिन कॉपी और पेस्ट में कुछ छिपा हुआ चरित्र या कुछ होना चाहिए था, इसलिए मैंने बस इसे टाइप किया।
अंतरिक्ष यान

मैं इस सवाल को समाप्त कर रहा हूं ताकि इस सटीक समस्या को हल करने की कोशिश की जा सके, जैसा कि यह पता चला है, आपका जवाब है कि मुझे क्या चाहिए।
इंजीनियर टोस्ट

ध्यान दें कि यह विधि UTC टाइमज़ोन के अनुसार दिनांक और समय वापस कर देगी।
अमृत

41

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

function getMonth(date) {
  var month = date.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}  

आप Dateऐसे फ़ंक्शन के साथ ऑब्जेक्ट का विस्तार भी कर सकते हैं :

Date.prototype.getMonthFormatted = function() {
  var month = this.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}

4
ध्यान दें कि getMonth 0 और 11 के बीच नंबर देता है, न कि 1 और 12.
सलमान A

4
यह असंगत परिणाम देता है। नवंबर और दिसंबर के लिए यह एक स्ट्रिंग लौटाता है और अन्य महीनों के लिए यह एक नंबर देता है।
टिम डाउन

मैंने सलमान को चेतावनी को लागू करने के लिए कोड को अपडेट किया है कि गेटमार्ट 1. के बजाय शून्य आधारित है और यह सुनिश्चित करने के लिए जोड़े गए उद्धरण कि एक स्ट्रिंग हमेशा वापस आ जाती है।
जनवरी को 18:15 पर जन डेरक

23

ऐसा करने का सबसे अच्छा तरीका यह है कि आप अपना स्वयं का सरल फ़ॉर्मेटर बनाएँ (नीचे):

getDate()रिटर्न (1-31 से) महीने के दिन
getMonth()माह रिटर्न (0-11 से) < शून्य आधारित, 0 = जनवरी 11 = दिसम्बर
getFullYear() साल रिटर्न (चार अंक) < नहीं है उपयोगgetYear()

function formatDateToString(date){
   // 01, 02, 03, ... 29, 30, 31
   var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
   // 01, 02, 03, ... 10, 11, 12
   var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
   // 1970, 1971, ... 2015, 2016, ...
   var yyyy = date.getFullYear();

   // create the format you want
   return (dd + "-" + MM + "-" + yyyy);
}

20

उपयोग क्यों नहीं padStart?

var dt = new Date();

year  = dt.getYear() + 1900;
month = (dt.getMonth() + 1).toString().padStart(2, "0");
day   = dt.getDate().toString().padStart(2, "0");

console.log(year + '/' + month + '/' + day);

यह हमेशा 2 अंकों की संख्या लौटाएगा भले ही महीना या दिन 10 से कम हो।

टिप्पणियाँ:

  • यह केवल इंटरनेट एक्सप्लोरर के साथ काम करता है, तो js कोड का उपयोग कर transpiled है जाएगा कोलाहल
  • getYear()1900 से वर्ष देता है और आवश्यकता नहीं है padStart
  • getMonth() महीने को 0 से 11 तक लौटाता है।
    • 1 से 12 रखने के लिए 1 महीने पहले पैडिंग में जोड़ा जाता है
  • getDate() दिन को 1 से 31 तक देता है।
    • 7 वें दिन वापस आ जाएगा 07और इसलिए हमें स्ट्रिंग को पैड करने से पहले 1 जोड़ने की आवश्यकता नहीं है।

1
हाँ। यह ऊपर एमडीएन लिंक में शामिल है। यदि आप ट्रांसपाइल के लिए बैबल का उपयोग करते हैं, तो आपको कोई समस्या नहीं होनी चाहिए।
SomeGuyOnAComputer

9

निम्नलिखित का उपयोग db2 तिथि प्रारूप अर्थात YYYY-MM-DD को टर्नरी ऑपरेटर के उपयोग से परिवर्तित करने के लिए किया जाता है

var currentDate = new Date();
var twoDigitMonth=((currentDate.getMonth()+1)>=10)? (currentDate.getMonth()+1) : '0' + (currentDate.getMonth()+1);  
var twoDigitDate=((currentDate.getDate())>=10)? (currentDate.getDate()) : '0' + (currentDate.getDate());
var createdDateTo = currentDate.getFullYear() + "-" + twoDigitMonth + "-" + twoDigitDate; 
alert(createdDateTo);


6
function monthFormated(date) {
   //If date is not passed, get current date
   if(!date)
     date = new Date();

     month = date.getMonth();

    // if month 2 digits (9+1 = 10) don't add 0 in front 
    return month < 9 ? "0" + (month+1) : month+1;
}



5

अगर यह कुछ समय के लिए छूट जाए, तो मैं इसे पाने के लिए देख रहा था:

YYYYMMDD

आज के लिए, और साथ मिला:

const dateDocumentID = new Date()
  .toISOString()
  .substr(0, 10)
  .replace(/-/g, '');

2
जवाब साफ है। के लिए DD/MM/YY, मैं new Date().toISOString().substr(0, 10).split('-').reverse().map(x => x.substr(0, 2)).join('/')
मैक्स मा

4

यह मेरा समाधान था:

function leadingZero(value) {
  if (value < 10) {
    return "0" + value.toString();
  }
  return value.toString();
}

var targetDate = new Date();
targetDate.setDate(targetDate.getDate());
var dd = targetDate.getDate();
var mm = targetDate.getMonth() + 1;
var yyyy = targetDate.getFullYear();
var dateCurrent = leadingZero(mm) + "/" + leadingZero(dd) + "/" + yyyy;


3

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

function setDateZero(date){
  return date < 10 ? '0' + date : date;
}

var curr_date = ev.date.getDate();
var curr_month = ev.date.getMonth() + 1;
var curr_year = ev.date.getFullYear();
var thisDate = curr_year+"-"+setDateZero(curr_month)+"-"+setDateZero(curr_date);

उम्मीद है की यह मदद करेगा!


2

MDN से टिप :

function date_locale(thisDate, locale) {
  if (locale == undefined)
    locale = 'fr-FR';
  // set your default country above (yes, I'm french !)
  // then the default format is "dd/mm/YYY"

  if (thisDate == undefined) {
    var d = new Date();
  } else {
    var d = new Date(thisDate);
  }
  return d.toLocaleDateString(locale);
}

var thisDate = date_locale();
var dayN = thisDate.slice(0, 2);
var monthN = thisDate.slice(3, 5);
console.log(dayN);
console.log(monthN);

http://jsfiddle.net/v4qcf5x6/


2

new Date().getMonth() विधि महीने को संख्या के रूप में लौटाती है (0-11)

आप इस फ़ंक्शन के साथ आसानी से सही माह संख्या प्राप्त कर सकते हैं।

function monthFormatted() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}

1
function GetDateAndTime(dt) {
  var arr = new Array(dt.getDate(), dt.getMonth(), dt.getFullYear(),dt.getHours(),dt.getMinutes(),dt.getSeconds());

  for(var i=0;i<arr.length;i++) {
    if(arr[i].toString().length == 1) arr[i] = "0" + arr[i];
  }

  return arr[0] + "." + arr[1] + "." + arr[2] + " " + arr[3] + ":" + arr[4] + ":" + arr[5]; 
}

1

और यहां एक और संस्करण https://jsfiddle.net/ivos/zcLxo8oy/1/ , उपयोगी होने की उम्मीद है।

var dt = new Date(2016,5,1); // just for the test
var separator = '.';
var strDate = (dt.getFullYear() + separator + (dt.getMonth() + 1) + separator + dt.getDate());
// end of setup

strDate = strDate.replace(/(\b\d{1}\b)/g, "0$1")

1

यहाँ उत्तर उपयोगी थे, हालाँकि मुझे इससे अधिक की आवश्यकता है: न केवल महीने, दिनांक, महीने, घंटे और सेकंड, डिफ़ॉल्ट नाम के लिए।

दिलचस्प बात यह है कि, हालांकि "0" के लिए आवश्यक था कि उपरोक्त सभी के लिए "+ 1" की आवश्यकता केवल महीने के लिए थी, अन्य के लिए नहीं।

उदाहरण के रूप में:

("0" + (d.getMonth() + 1)).slice(-2)     // Note: +1 is needed
("0" + (d.getHours())).slice(-2)         // Note: +1 is not needed

0

मेरा समाधान:

function addLeadingChars(string, nrOfChars, leadingChar) {
    string = string + '';
    return Array(Math.max(0, (nrOfChars || 2) - string.length + 1)).join(leadingChar || '0') + string;
}

उपयोग:

var
    date = new Date(),
    month = addLeadingChars(date.getMonth() + 1),
    day = addLeadingChars(date.getDate());

jsfiddle: http://jsfiddle.net/8xy4Q/1/


0
var net = require('net')

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

function now () {
  var d = new Date()
  return d.getFullYear() + '-'
    + zeroFill(d.getMonth() + 1) + '-'
    + zeroFill(d.getDate()) + ' '
    + zeroFill(d.getHours()) + ':'
    + zeroFill(d.getMinutes())
}

var server = net.createServer(function (socket) {
  socket.end(now() + '\n')
})

server.listen(Number(process.argv[2]))

0

अगर u getDate () दिनांक को 1 के बजाय 01 के रूप में वापस करने के लिए कार्य करता है, तो इसके लिए कोड यहां दिया गया है .... मान लें कि आज की तारीख 01-11-2018 है

var today = new Date();
today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + today.getDate();      
console.log(today);       //Output: 2018-11-1


today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + ((today.getDate() < 10 ? '0' : '') + today.getDate());
console.log(today);        //Output: 2018-11-01

0

मैं ऐसा कुछ करना चाहता था और यही मैंने किया

ps मुझे पता है कि शीर्ष पर सही उत्तर हैं, लेकिन मैं यहां अपना कुछ जोड़ना चाहता हूं

const todayIs = async () =>{
    const now = new Date();
    var today = now.getFullYear()+'-';
    if(now.getMonth() < 10)
        today += '0'+now.getMonth()+'-';
    else
        today += now.getMonth()+'-';
    if(now.getDay() < 10)
        today += '0'+now.getDay();
    else
        today += now.getDay();
    return today;
}

अत्यधिक प्रयास। है ना?
अहमन्द्वाज़बट्ट

0

यदि आप 10 से छोटे की जाँच करेंगे , तो आप उसके लिए एक नया फ़ंक्शन नहीं बना सकते हैं। बस ब्रैकेट में एक चर असाइन करें और इसे टर्नरी ऑपरेटर के साथ लौटाएं।

(m = new Date().getMonth() + 1) < 10 ? `0${m}` : `${m}`

0
currentDate(){
        var today = new Date();
        var dateTime =  today.getFullYear()+'-'+
                        ((today.getMonth()+1)<10?("0"+(today.getMonth()+1)):(today.getMonth()+1))+'-'+
                        (today.getDate()<10?("0"+today.getDate()):today.getDate())+'T'+
                        (today.getHours()<10?("0"+today.getHours()):today.getHours())+ ":" +
                        (today.getMinutes()<10?("0"+today.getMinutes()):today.getMinutes())+ ":" +
                        (today.getSeconds()<10?("0"+today.getSeconds()):today.getSeconds());        
            return dateTime;
},

0

मेरा सुझाव है कि आप मोमेंट https://momentjs.com/ नामक एक अलग लाइब्रेरी का उपयोग करें

इस तरह से आप बिना अतिरिक्त काम किए सीधे तारीख को प्रारूपित कर सकते हैं

const date = moment().format('YYYY-MM-DD')
// date: '2020-01-04'

सुनिश्चित करें कि आप पल का आयात करें और साथ ही इसका उपयोग करने में सक्षम हों।

yarn add moment 
# to add the dependency
import moment from 'moment' 
// import this at the top of the file you want to use it in

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


1
पल-पल का सुझाव पहले ही दिया जा चुका है; लेकिन आपकी सलाह अभी भी पूरी और उपयोगी है।
आईएनडी

0
$("body").delegate("select[name='package_title']", "change", function() {

    var price = $(this).find(':selected').attr('data-price');
    var dadaday = $(this).find(':selected').attr('data-days');
    var today = new Date();
    var endDate = new Date();
    endDate.setDate(today.getDate()+parseInt(dadaday));
    var day = ("0" + endDate.getDate()).slice(-2)
    var month = ("0" + (endDate.getMonth() + 1)).slice(-2)
    var year = endDate.getFullYear();

    var someFormattedDate = year+'-'+month+'-'+day;

    $('#price_id').val(price);
    $('#date_id').val(someFormattedDate);
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.