আমি কীভাবে 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-
ডাক

30
@ ডাক: এবং বাস্তবে বিষয়টি কখন আসবে? আমি সন্দেহ করি আপনি এক সেকেন্ডে কয়েক হাজার মাস গণনা করছেন।
সাশা চেদিগোভ

2
@ ক্যাস্পারহোল্ডুম @ getMonthএবং getDateরিটার্ন নম্বরগুলি, স্ট্রিং নয়। এবং যদি স্ট্রিংসের সাথে সামঞ্জস্যতা প্রয়োজন হয়, তবে '0' + Number(n)কাজটি করবে।
রবজি

9
@ সাশা চেদিগোভ নিশ্চিত যে আপনি মাসটি কয়েক সেকেন্ডে হাজার বার গণনা করতে পারেন, বিশেষত যদি আপনি বাছাই করছেন
ডিজিন অক্সিজেন

87

আপনি যদি "YYYY-MM-DDTHH: মিমি: এসএস" এর মতো একটি ফর্ম্যাট চান তবে এটি আরও দ্রুত হতে পারে:

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

বা সাধারণত ব্যবহৃত মাইএসকিউএল ডেটটাইম ফর্ম্যাট "YYYY-MM-DD HH: মিমি: এসএস":

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

আশা করি এটা কাজে লাগবে


1
এটি আমার কাছে আসা সবচেয়ে নিখুঁত সমাধান। কেবল এখানে সমস্যা টাইমজোন অফসেটের।
প্রার্থনা

3
টাইমজোন অফসেটের কিছু যত্ন নেওয়া যেতে পারে যেমন: var তারিখ = নতুন তারিখ (নতুন তারিখ ()। গেটটাইম () - নতুন তারিখ () .replace ('টি', '');
প্রার্থনা

প্রার্থনা, আপনার কোডটি আমার পক্ষে কাজ করে তবে কপি এবং পেস্টের অবশ্যই কোনও গোপন অক্ষর বা কিছু থাকতে পারে, তাই আমি কেবল এটি টাইপ করেছি।
স্পেসব্রেড

আমি এই সঠিক সমস্যাটি সমাধান করার চেষ্টা করে এই প্রশ্নের অবসান ঘটিয়েছিলাম, যেমন দেখা যাচ্ছে যে, আপনার উত্তরটি আমার যা প্রয়োজন তা হল।
ইঞ্জিনিয়ার টোস্ট

নোট করুন যে এই পদ্ধতিটি ইউটিসি টাইমজোন অনুসারে তারিখ এবং সময় ফিরিয়ে দেবে।
আমর

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 1 এবং 12 নয়, 0 এবং 11 এর মধ্যে একটি নম্বর প্রদান করে
সালমান এ

4
এটি অসঙ্গতিপূর্ণ ফলাফল দেয়। নভেম্বর এবং ডিসেম্বরের জন্য এটি একটি স্ট্রিং দেয় এবং অন্যান্য মাসের জন্য এটি একটি নম্বর দেয়।
টিম ডাউন

আমি সালমানকে একটি সতর্কবার্তা প্রয়োগের জন্য কোডটি আপডেট করেছি যে getMonth ১ এর পরিবর্তে শূন্য ভিত্তিতে রয়েছে এবং কোনও স্ট্রিং সর্বদা ফিরে আসে তা নিশ্চিত করার জন্য উদ্ধৃতি যুক্ত করেছে।
জান ডার্ক

23

এটি করার সর্বোত্তম উপায় হ'ল আপনার নিজস্ব সরল বিন্যাস তৈরি করা (নীচে হিসাবে):

getDate()মাসের দিন ফেরত দেয় (১-৩১১ থেকে)
getMonth()মাসে ফিরে আসে (০-১১ থেকে) < শূন্য-ভিত্তিক, ০ = জানুয়ারী, ১১ = ডিসেম্বর
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);

মাস বা দিন 10 এর চেয়ে কম হলেও এটি সর্বদা 2 সংখ্যার নম্বর ফেরত দেবে।

মন্তব্য:

  • এটি কেবলমাত্র ইন্টারনেট এক্সপ্লোরার সঙ্গে কাজ যদি JS কোড ব্যবহার transpiled হয় হবে Babel
  • getYear()1900 সাল থেকে ফেরত দেয় এবং প্রয়োজন হয় না padStart
  • getMonth() 0 থেকে 11 পর্যন্ত মাসে ফিরে আসে।
    • 1 থেকে 12 রাখার জন্য প্যাডিংয়ের আগে মাসে 1 যুক্ত করা হয়
  • getDate() 1 থেকে 31 পর্যন্ত দিনটি ফেরত দেয়।
    • সপ্তম দিনটি ফিরে আসবে 07এবং সুতরাং স্ট্রিং প্যাডিংয়ের আগে আমাদের 1 যোগ করার দরকার নেই।

1
এফওয়াইআই, padStartআইই এর সাথে কাজ করছে না
khcpietro

1
হা. এটি উপরের MDN লিঙ্কের অন্তর্ভুক্ত। আপনি যদি ট্রান্সপিল করতে বাবেল ব্যবহার করেন তবে আপনার কোনও সমস্যা হবে না।
সোমগুইঅনাকম্পিউটার

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);

7

আমি এটি করব:

var d = new Date('January 13, 2000');
var s = d.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' });
console.log(s); // prints 01/13/2000


গ্রহণযোগ্য উত্তর হওয়া উচিত।
হারুন

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

এমডিএন থেকে পরামর্শ :

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());

জেএসফিডাল: 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

আপনি যদি 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

আমি এই জাতীয় কিছু করতে চেয়েছিলাম এবং আমি এটিই করেছি

পিএস আমি জানি যে উপরে সঠিক উত্তর (গুলি) রয়েছে, তবে কেবল এখানে আমার নিজের কিছু যুক্ত করতে চেয়েছিলেন

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);
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.