জেএস তারিখ অবজেক্ট থেকে ওয়াইওয়াইএমএমডিডি ফর্ম্যাটে স্ট্রিং পাবেন?


397

আমি জেএসকে বিন্যাসে date objectস্ট্রিংয়ে রূপান্তর করতে ব্যবহার করার চেষ্টা করছি YYYYMMDD। সেখানে concatenating চেয়ে একটি সহজ উপায় আছে Date.getYear(), Date.getMonth()এবং Date.getDay()?


4
এই তিনটির প্রতিদ্বন্দ্বিতা করার উপায় হল
জুয়ান কর্টেস

5
আপনি যদি একটি স্ট্রিং চান যা একই তারিখে পার্স করবে, তবে মাসিক বৃদ্ধি করতে ভুলবেন না। আপনার
স্পেসটি মেলানোর জন্য আপনাকে

উত্তর:


620

কোডের পরিবর্তিত টুকরা আমি প্রায়শই ব্যবহার করি:

Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('');
};

var date = new Date();
date.yyyymmdd();

16
আপনার [1]সাথে প্রতিস্থাপন করা উচিত .length===2, কারণ স্ট্রিংয়ের কোনও সূচক সম্পূর্ণরূপে সমর্থিত নয়। কারণগুলির জন্য এই উত্তরটি দেখুন।
এডিয়াকাপি

6
var মিমি = (this.getMonth () + 101) .toStrung ()। স্ট্রিং (0, 2);
ਦਾਨ

7
@ অ্যাডিয়াকাপির ঠিক সমাধানের যে কোনও ব্যবহারিক উদাহরণ চাইবার জন্য, আমি এখানে একটি ঝাঁকুনি
হত্যাকারী 27

1
আপনি যদি বিন্দু বিভাজক রাখতে চান:[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
কামিল কিয়েসজেউস্কি

3
@ 9dan এটি হওয়া উচিত নয়var mm = (this.getMonth() + 101).toString().substring(1, 3)
Pnar Sbi Wer

316

আমি প্রোটোটাইপ যুক্ত করতে পছন্দ করি না। একটি বিকল্প হবে:

var rightNow = new Date();
var res = rightNow.toISOString().slice(0,10).replace(/-/g,"");

<!-- Next line is for code snippet output only -->
document.body.innerHTML += res;


51
যদি আপনার rightNowচারপাশের চলকের প্রয়োজন না হয় তবে আপনি new Dateএকটি এক লাইনে (new Date()).toISOString().slice(0,10).replace(/-/g,"")
এগুলি গুটিয়ে ফেলতে পারেন

5
আমি চেয়েছিলেন YYYYMMDDHHmmSSsss, তাই আমি এটা করেছে: var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");। খুব সহজ, তবে এনকেপসুলেট করা উচিত।
জেস

65
এটি সাধারণভাবে কাজ করবে না কারণ ডেট.টোআইএসএসটিরিং () একটি ইউটিসি ফর্ম্যাটড তারিখ তৈরি করে এবং তাই সময়সীমার উপর নির্ভর করে তারিখের গণ্ডিগুলি লাফ দিতে পারে। জিএমটি +১ তে উদাহরণ: (নতুন তারিখ (2013,13, 25)) টোআইএসএসটিং () == '2013-12-24T23: 00: 00.000Z'
ওয়েবসার্ট

26
এটি ব্যর্থ হবে যদি 10000 বছরে কেউ আপনার 'নস্টালজিক' কোড ব্যবহার করে।
ট্রেভি আওটার

9
সময় অঞ্চলগুলির সাথে লড়াই করার জন্য একটি প্রস্তাবিত উন্নতি improvement rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
আন্দ্রেয়াস

181

আপনি toISOStringফাংশনটি ব্যবহার করতে পারেন :

var today = new Date();
today.toISOString().substring(0, 10);

এটি আপনাকে একটি "yyyy-mm-dd" ফর্ম্যাট দেবে।


24
টাইমজোন দিবালোক ইত্যাদির কারণে কিছু ক্ষেত্রে এটি সঠিক দিনটি অন্তর্ভুক্ত করবে না ...
মিগুয়েল

1
হতে পারে আমার সৃজনশীলতা @ মিগুয়েল নষ্ট হয়ে গেছে, তবে এমন ঘটনা ঘটতে পারে তা আমি ভাবতে পারি না। আপনি একটি উদাহরণ প্রদান করতে আপত্তি করবেন?
মেঘের কাজগুলি

35
আপনি যদি +1 টাইমজোনটিতে থাকেন এবং একটি তারিখ [2015-09-01 00:00:00 GMT + 1] থাকে তবে টোআইএসএসটিং () পদ্ধতিটি '2015-08-31T23: 00: 00.000Z 'কারণ তারিখটি স্ট্রিং করার আগে ইউটিসি / 0-অফসেটে রূপান্তরিত হয়।
লুক বাউলচ

কিছুটা ছোট ... var আজ = (নতুন তারিখ ())। ToISOString ()। স্ট্রিং (0, 10);
চাবিথফ্রুট

বিভিন্ন GMT- এর সাথে ব্যর্থ হয়
টোবিয়া

131

Moment.js আপনার বন্ধু হতে পারে

var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');

18
ঠিক আছে এটি আমার অ্যাপ্লিকেশনগুলিতে 40 কেবি (মিনিডেড, নন জিজেপ) যুক্ত করেছে, তবে আমি এটির জন্য গিয়েছিলাম, ধন্যবাদ :)।
বার্ট

এখন পর্যন্ত সেরা উত্তর!
সত্যইএক্সএক্স

9
আমি অবশ্যম্ভাবীভাবে আর মুহুর্তের অপেক্ষা না করা পর্যন্ত অপেক্ষা করাও বিরক্ত করি না, আমি কেবল একটি প্রকল্পের শুরুতে এটি যুক্ত করি :)
মার্টিনওয়ার্ডস

1
আপনি এটি আরও সহজ করে তুলতে পারেন:var formattedDate = moment().format('YYYYMMDD');
এনএস 16

37

আপনার যদি খাঁটি জেএস সমাধানের প্রয়োজন না হয় তবে আপনি jQuery UI ব্যবহার করতে পারেন এই কাজটি করতে:

$.datepicker.formatDate('yymmdd', new Date());

আমি সাধারণত খুব বেশি লাইব্রেরি আমদানি করতে পছন্দ করি না। তবে jQuery UI এত কার্যকর, আপনি সম্ভবত এটি আপনার প্রকল্পের অন্য কোথাও ব্যবহার করবেন।

পরিদর্শন http://api.jqueryui.com/datepicker/ আরো উদাহরণ জন্য


37

এটি কোডের একক লাইন যা আপনি YYYY-MM-DDআজকের তারিখের স্ট্রিং তৈরি করতে ব্যবহার করতে পারেন ।

var d = new Date().toISOString().slice(0,10);

^ এই! FTW এর! +1 .. যদিও কিছুটা পরীক্ষা করা দরকার।
গোগল

21
সতর্কতা কড়া, যদি আপনার তারিখটি 2016-01-01 00:00:00 GMT +2 হয় তবে তা 2015-12-31 এ ফিরে আসবে কারণ toISOString()2015-12-31T22 দেবে: 00: 00 GMT +0 (দুই ঘন্টা আগে)।
জেরুম গিলার্ড

29
new Date('Jun 5 2016').
  toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).
  replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');

// => '2016-06-05'

5
সেরা আত্মা।
زيাদ

কোনও কারণে, পূর্বের উপকূল মার্কিন যুক্তরাষ্ট্রে আমি এখানে সূত্রটি চালানোর সময় রূপান্তর করার জন্য একটি দিন পিছনে না যাওয়ার জন্য সময় (এমনকি 00:00 হলেও) যোগ করার প্রয়োজন ছিল। একবার আমি এটি করেছি, এটি নির্ভরযোগ্যভাবে কাজ শুরু করে। আমি এটি সম্পর্কে যেটি পছন্দ করি তা হ'ল এটি একাধিক ফর্ম্যাটে ইনপুট তারিখ নিতে পারে, সুতরাং আমাকে আর এ নিয়ে উদ্বিগ্ন হওয়ার দরকার নেই। new Date('Sun Mar 31 2019 00:00:00.000').toLocaleString('en-us', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/(\d+)\/(\d+)\/(\d+)/, '$3-$1-$2');
নিনিয়া

24

Oo এর জবাব ছাড়াও আমি যুক্তির ক্রিয়াকলাপগুলি রিটার্ন থেকে আলাদা করার প্রস্তাব দিতে চাই এবং পরিবর্তে এগুলি ভেরিয়েবলগুলিতে Ternaries হিসাবে রাখি।

এছাড়াও, concat()ভেরিয়েবলের নিরাপদ সংমিশ্রণ নিশ্চিত করতে ব্যবহার করুন

Date.prototype.yyyymmdd = function() {
  var yyyy = this.getFullYear();
  var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
  var dd = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
  return "".concat(yyyy).concat(mm).concat(dd);
};

Date.prototype.yyyymmddhhmm = function() {
  var yyyymmdd = this.yyyymmdd();
  var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
  var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
  return "".concat(yyyymmdd).concat(hh).concat(min);
};

Date.prototype.yyyymmddhhmmss = function() {
  var yyyymmddhhmm = this.yyyymmddhhmm();
  var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
  return "".concat(yyyymmddhhmm).concat(ss);
};

var d = new Date();
document.getElementById("a").innerHTML = d.yyyymmdd();
document.getElementById("b").innerHTML = d.yyyymmddhhmm();
document.getElementById("c").innerHTML = d.yyyymmddhhmmss();
<div>
  yyyymmdd: <span id="a"></span>
</div>
<div>
  yyyymmddhhmm: <span id="b"></span>
</div>
<div>
  yyyymmddhhmmss: <span id="c"></span>
</div>


যদি কেউ এটি ব্যবহার করতে পছন্দ করে তবে আমি এখানে ডিআরওয়াইয়ের পরামর্শ দিচ্ছি, আবার একই কাজ না করে ইতিমধ্যে তৈরি ফাংশনগুলি পুনরায় ব্যবহার করুন।
রিজকিট

@ রিজকিট ডিআরওয়াই একটি নীতি এবং একটি প্যাটার্ন নয় তবে নিশ্চিত, এটি অনেক উন্নত হতে পারে। আমি যদি নিজেকে এটি ব্যবহার করতে পারি তবে আমি সম্ভবত অন্য একটি প্যাটার্ন ব্যবহার করব এবং পদ্ধতিগুলি প্রোটোটাইপ থেকে দূরে সরিয়ে ফেলব। আমি সমস্যাটি সমাধানের অন্যান্য উপায়গুলি যেখানে সেখানে দেখানোর জন্য উদাহরণটি লিখেছিলাম। লোকেরা সেখান থেকে এটি কোথায় নিয়ে যায় তা নিজেরাই
এরিক হার্লিটজ

নিস! আমি ("00" + (this.getDate())).slice(-2)সংখ্যাগুলি দ্বি-অঙ্কের ভিত্তিতে পেতে ব্যবহার করি । "If" বা "?:" বিবৃতি নেই এবং .getX () ফাংশনে কম কল রয়েছে calls কিছুটা দ্রুত না হলে এটি কমপক্ষে আরও পঠনযোগ্য।
লে হোল্যান্ডয়েস অবিচলিত

22

আমি নেটিভ অবজেক্টগুলিকে সংশোধন করতে পছন্দ করি না এবং আমি মনে করি গ্রহণযোগ্য দ্রবণটির প্যাডিংয়ের চেয়ে গুণটি আরও পরিষ্কার cle

function yyyymmdd(dateIn) {
  var yyyy = dateIn.getFullYear();
  var mm = dateIn.getMonth() + 1; // getMonth() is zero-based
  var dd = dateIn.getDate();
  return String(10000 * yyyy + 100 * mm + dd); // Leading zeros for mm and dd
}

var today = new Date();
console.log(yyyymmdd(today));

ফিডাল: http://jsfiddle.net/gbdarren/Ew7Y4/


4
এই উত্তরটি হ্রাস পেয়েছিল এবং কেন জানি না। আমি অনুভব করেছি যে স্ট্রিং ম্যানিপুলেশনের চেয়ে গণিত দ্রুত এবং স্পষ্ট। কেন এটি খারাপ উত্তর তা যদি কেউ জানেন তবে দয়া করে আমাকে জানান।
ড্যারেন গ্রিফিথ

4
10000 গুণকটি সেখানে YYYY বাম দিকে 4 স্থান (মাস এবং দিন অঙ্কের প্রতিটি 2 ডিজিটের প্রয়োজন) দ্বারা স্থানান্তর করতে পারে এবং ওয়াই 10 কে বাগের সাথে কোনও সম্পর্ক নেই। আমি এই উত্তরটি পছন্দ করি এবং এটি শ্রদ্ধার প্রাপ্য!
উঃ ম্যাসন

1
এই উত্তরের জন্য ধন্যবাদ আমি এখানে ঝাঁকুনি
A. ম্যাসন

1
আমার মোটেও গুণটির প্রয়োজন হয়নি এবং কেন এটি আছে তা আমি বুঝতে পারি না। jsfiddle.net/navyjax2/gbqmv0t5 অন্যথায়, এটি ছেড়ে দিন, এবং এটি একটি দুর্দান্ত উত্তর এবং আমাকে অনেক সাহায্য করেছে।
vapcguy

1
@ ডি-মানি আহ, আপনি কী বোঝাতে চেয়েছেন তা বুঝতে পেরেছি - আপনি একে অপরের উপর পৃথক পৃথক গণিতের অপারেশন করা এড়াতে সংখ্যাগুলি একসাথে যুক্ত করে একটি আলাদা ধরণের সংক্ষেপণ করছেন - সাধারণটি অস্বীকার করার জন্য একটি অপারেশন ' অন্যথায় তাদের জড়ান। ভাল করেছ! আমার কাজ করে কারণ আমি বিভাজনকারীদের ব্যবহার করছি (যা আমাকে .replace('-', '')এটি অপের প্রশ্নের উত্তর দেওয়ার জন্য করতে হবে), আপনি ওপির মূল প্রশ্নের সাথে সত্য ছিলেন এবং এটি অতিরিক্ত পদক্ষেপের প্রয়োজন হবে না। অসাধারণ!
vapcguy

15

ইউটিসিতে তারিখ.টোআইএসএসটিং () প্রিন্টিংয়ের কারণে কোনও সম্ভাব্য তারিখের ঝাঁপ সমস্যা ছাড়াই সরল জেএস (ইএস 5) সমাধান:

var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');

এটি @ পেয়ার গুইলবার্টের উত্তরে @ ওয়েবারস্টের মন্তব্যের জবাবে।


now.getMonth () জানুয়ারীর জন্য 0 ফিরে আসবে, এটি হওয়া উচিত (now.getMonth () + 1)
জাস

2
ভুল। তারিখের ইউটিসি ফাংশনটি আশা করে যে মাসে 0 থেকে 11 এর মধ্যে হবে (তবে অন্যান্য <0 এবং> 11 অনুমোদিত)।
ডারমাউজ

আপনি কেন একক একাধিক হাইফেন প্রতিস্থাপন করবেন? toISOStringএকের পর এক হাইফেন কি ফিরে আসতে পারে ?
মাইকেল উইট্র্যান্ট

মাইকেল - তিনি পাওয়া প্রতিটি হাইফেনকে একক হাইফেন দিয়ে প্রতিস্থাপন করছেন । এখনও কেন জানি না (সম্ভবত প্রতিস্থাপনের স্ট্রিং কোনও বিভাজকের জন্য কেবল স্থানধারক)। 'জি' এর অর্থ সমস্ত উপস্থিতি। আপনি যে প্যাটার্নটির কথা ভাবছেন তা হ'ল / [-] + / জি
জেরার্ড ওনিল

2
আপনি আমার দিন তৈরি করেছেন। জাভাস্ক্রিপ্টে ভয়ঙ্কর টাইমজোন হ্যান্ডলিংকে বাইপাস করার জন্য আমি একটি সহজ উপায়ের জন্য দিনগুলি অনুসন্ধান করেছি এবং এটি কৌশলটি কার্যকর করে!
গিলিয়াম এফ।

10

// UTC/GMT 0
document.write('UTC/GMT 0: ' + (new Date()).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812013509

// Client local time
document.write('<br/>Local time: ' + (new Date(Date.now()-(new Date()).getTimezoneOffset() * 60000)).toISOString().slice(0, 19).replace(/[^0-9]/g, "")); // 20150812113509


এই আমি ব্যবহার উত্তর। একটি লাইনার যা সময় অঞ্চল বিবেচনা করে। মূল পোস্টারের প্রশ্নের উত্তর দেওয়ার জন্য আমরা এটি করতে পারি: (নতুন তারিখ (তারিখ.নো () - (নতুন তারিখ ()) গেটটাইমজোনঅফসেট () * 60000))। g, "") .স্লাইস (0,8)
টমউডস

thx, আমি ব্যবহৃত YYYY-MM-DD পেতে: নতুন তারিখ (তারিখ.নো () - (নতুন তারিখ ()) ^ 0-9] / জি, "-")
নিক হামফ্রে

7

var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);

console.log(dateFormated);


খুব সুদর্শন. আপনাকে ধন্যবাদ
জেমেলিন

4
নতুন তারিখ () এর একটি সময় অঞ্চল এবং তারিখ.টোআইএসএসটিং () ইউটিসি হওয়ায় কাজ করবে না। আমার উত্তর দেখুন।
ডারমাউজ

@Dormouse এটি অন্য উপায়ে না? new Date()একটি নতুন তারিখ অবজেক্ট তৈরি করে যা কেবলমাত্র এনআর এর চারপাশে একটি মোড়ক। এমএস এর 1970/01/01 থেকে 00: 00: 00.000 ইউটিসি। তারপরে toISOStringস্থানীয় সময় অঞ্চলে মুদ্রণ করা।
স্টিজন ডি উইট

না, ইউটিসি-তে তারিখ.আস.আই.এস.এস্ট্রিং () প্রিন্ট করুন।
ডারমাউজ

7

আরেকটি উপায় হ'ল toLocaleDateStringলোকাল দিয়ে ব্যবহার করা যার বড় আকারের তারিখের ফর্ম্যাট মান রয়েছে , যেমন সুইডেন, লিথুয়ানিয়া, হাঙ্গেরি, দক্ষিণ কোরিয়া, ...:

date.toLocaleDateString('se')

সীমানা ছাড়ানো ( -) কেবল অ-অঙ্কগুলি প্রতিস্থাপনের বিষয়:

console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );

এটিতে আপনি ইউটিসি তারিখের ফর্ম্যাটগুলি পেতে পারেন এমন সম্ভাব্য ত্রুটি নেই: স্থানীয় সময় অঞ্চলের তারিখের তুলনায় ইউটিসি তারিখ একদিনের ছুটি হতে পারে।


6

আপনি কেবল বছরের সাথে তারিখ পেতে এই এক লাইন কোডটি ব্যবহার করতে পারেন

var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();

5

এই থ্রেডের সর্বাধিক জনপ্রিয় উত্তরের জন্য সামান্য বিট সরলীকৃত সংস্করণ https://stackoverflow.com/a/3067896/5437379 :

function toYYYYMMDD(d) {
    var yyyy = d.getFullYear().toString();
    var mm = (d.getMonth() + 101).toString().slice(-2);
    var dd = (d.getDate() + 100).toString().slice(-2);
    return yyyy + mm + dd;
}

5

ডেটফর্ম্যাট একটি খুব ব্যবহৃত প্যাকেজ।

ব্যবহারবিধি:

dateformatএনপিএম থেকে ডাউনলোড এবং ইনস্টল করুন । এটি আপনার মডিউলে প্রয়োজনীয়:

const dateFormat = require('dateformat');

এবং তারপরে আপনার জিনিসগুলি ফর্ম্যাট করুন:

const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');


4

এই লোকটি এখানে => http://blog.stevenlevithan.com/archives/date-time-formatformat() জাভাস্ক্রিপ্টের Dateঅবজেক্টের জন্য একটি ফাংশন লিখেছেন , যাতে এটি পরিচিত আক্ষরিক ফর্ম্যাটগুলির সাথে ব্যবহার করা যায়।

আপনার অ্যাপ্লিকেশনটির জাভাস্ক্রিপ্টে যদি পুরো বৈশিষ্ট্যযুক্ত তারিখ বিন্যাসের প্রয়োজন হয় তবে এটি ব্যবহার করুন। অন্যথায় আপনি যা করতে চান তা যদি বন্ধ হয়, তবে getearear (), getMonth (), getDay () সম্ভবত সবচেয়ে সহজ।


4

@ Oo এর উত্তর থেকে কাজ করা আপনাকে ফর্ম্যাট স্ট্রিং অনুসারে তারিখের স্ট্রিং ফিরিয়ে দেবে। আপনি ইয়ার এবং মিলিসেকেন্ডগুলির জন্য আপনার যদি প্রয়োজন হয় তবে আপনি সহজেই 2 ডিজিটের বছরের রেজেক্স যুক্ত করতে পারেন।

Date.prototype.getFromFormat = function(format) {
    var yyyy = this.getFullYear().toString();
    format = format.replace(/yyyy/g, yyyy)
    var mm = (this.getMonth()+1).toString(); 
    format = format.replace(/mm/g, (mm[1]?mm:"0"+mm[0]));
    var dd  = this.getDate().toString();
    format = format.replace(/dd/g, (dd[1]?dd:"0"+dd[0]));
    var hh = this.getHours().toString();
    format = format.replace(/hh/g, (hh[1]?hh:"0"+hh[0]));
    var ii = this.getMinutes().toString();
    format = format.replace(/ii/g, (ii[1]?ii:"0"+ii[0]));
    var ss  = this.getSeconds().toString();
    format = format.replace(/ss/g, (ss[1]?ss:"0"+ss[0]));
    return format;
};

d = new Date();
var date = d.getFromFormat('yyyy-mm-dd hh:ii:ss');
alert(date);

আমি জানি না যে এটি কতটা দক্ষ, বিশেষত পারফ ওয়াইস কারণ এটি প্রচুর রেইগেক্স ব্যবহার করে। এটি সম্ভবত কিছু কাজ ব্যবহার করতে পারে আমি খাঁটি জেএস মাস্টার করি না।


4

এই কোডটি পিয়ের গুইলবার্টের উত্তরে স্থির:

(এটি 10000 বছর পরেও কাজ করে)

YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")

4

দেখে মনে হচ্ছে যে মটুলগুলি সরবরাহ করে Date().format(): https://mootools.net/more/docs/1.6.0/ টাইপস / তারিখ

আমি নিশ্চিত না যদিও এটি কেবল এই বিশেষ কাজের জন্য অন্তর্ভুক্ত করা উচিত।


3

যখন আমাকে এটি করার দরকার হয় আমি সাধারণত নীচের কোডটি ব্যবহার করি।

var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
    + ('0' + (date.getMonth() + 1)).slice(-2)
    + '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written

ব্যাখ্যা করার জন্য .slice (-2) আমাদের স্ট্রিংয়ের শেষ দুটি অক্ষর দেয়।

সুতরাং যাই হোক না কেন, আমরা দিন বা মাসে "0" যুক্ত করতে পারি এবং কেবল শেষ দুজনের জন্য জিজ্ঞাসা করতে পারি যেহেতু সেগুলি সর্বদা আমরা চাই দুটি হয় two

সুতরাং যদি MyDate.getMonth () 9 টি প্রত্যাবর্তন করে তবে তা হবে:

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

সুতরাং .slice (-2) যুক্ত করা আমাদের শেষ দুটি অক্ষর দেয় যা:

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

"09"

তবে ডেট.জেটমোনথ () যদি 10 ফেরত দেয় তবে তা হবে:

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

সুতরাং .slice (-2) যুক্ত করা আমাদের শেষ দুটি অক্ষর দেয় বা:

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

"10"


3

সরলতা এবং পাঠযোগ্যতার জন্য অন্যটির জবাব দেওয়া।
এছাড়াও, বিদ্যমান পদ্ধতিগুলি নতুন পদ্ধতিতে সম্পাদনা করার জন্য উত্সাহ দেওয়া হয় না:

function getDateInYYYYMMDD() {
    let currentDate = new Date();

    // year
    let yyyy = '' + currentDate.getFullYear();

    // month
    let mm = ('0' + (currentDate.getMonth() + 1));  // prepend 0 // +1 is because Jan is 0
    mm = mm.substr(mm.length - 2);                  // take last 2 chars

    // day
    let dd = ('0' + currentDate.getDate());         // prepend 0
    dd = dd.substr(dd.length - 2);                  // take last 2 chars

    return yyyy + "" + mm + "" + dd;
}

var currentDateYYYYMMDD = getDateInYYYYMMDD();
console.log('currentDateYYYYMMDD: ' + currentDateYYYYMMDD);


2

আপনি যদি অতিরিক্ত (তবে ছোট) গ্রন্থাগারটি অন্তর্ভুক্ত না করেন তবে সুগার.জেএস জাভাস্ক্রিপ্টে তারিখগুলি নিয়ে কাজ করার জন্য প্রচুর সুন্দর কার্যকারিতা সরবরাহ করে। একটি তারিখ ফর্ম্যাট করতে, ফর্ম্যাট ফাংশনটি ব্যবহার করুন :

new Date().format("{yyyy}{MM}{dd}")

2

yyyymmdd=x=>(f=x=>(x<10&&'0')+x,x.getFullYear()+f(x.getMonth()+1)+f(x.getDate()));
alert(yyyymmdd(new Date));


1
আপনার উত্তরে কিছু বিবরণ যুক্ত করার ফলে আপনি এই কোডটিতে কী করছেন সে সম্পর্কে কিছুটা বর্ণনা করার চেষ্টা করবে যাতে অন্যরা এটিকে আরও স্পষ্টভাবে বুঝতে পারে।
মুহাম্মদ ওমর আসলাম

কঠোর মোডে বা টাইপস্ক্রিপ্টের পরিবর্তে "চলুন চ, yyyymmdd = x => ..." ব্যবহার করুন। Yyyymmdd এবং f ফাংশন অন্যথায় সংজ্ঞায়িত।
সর্বাধিক


2

প্যাড স্টার্ট ব্যবহার করুন :

Date.prototype.yyyymmdd = function() {
    return [
        this.getFullYear(),
        (this.getMonth()+1).toString().padStart(2, '0'), // getMonth() is zero-based
        this.getDate().toString().padStart(2, '0')
    ].join('-');
};

1

এখানে একটি আরও জেনেরিক দৃষ্টিভঙ্গি দেওয়া হয়েছে যা উভয় তারিখ এবং সময় উপাদানগুলিকে মঞ্জুরি দেয় এবং একইভাবে সংখ্যা বা স্ট্রিং হিসাবে বাছাইযোগ্য।

তারিখ আইএসও ফর্ম্যাটের সংখ্যার ক্রমের ভিত্তিতে স্থানীয় সময় অঞ্চলে রূপান্তর করুন এবং অ-সংখ্যাগুলি সরান। অর্থাৎ,

// monkey patch version
Date.prototype.IsoNum = function (n) {
    var tzoffset = this.getTimezoneOffset() * 60000; //offset in milliseconds
    var localISOTime = (new Date(this - tzoffset)).toISOString().slice(0,-1);
    return localISOTime.replace(/[-T:\.Z]/g, '').substring(0,n || 20); // YYYYMMDD
}

ব্যবহার

var d = new Date();
// Tue Jul 28 2015 15:02:53 GMT+0200 (W. Europe Daylight Time)
console.log(d.IsoNum(8));  // "20150728"
console.log(d.IsoNum(12)); // "201507281502"
console.log(d.IsoNum());   // "20150728150253272"

1

নেটিভ জাভাস্ক্রিপ্ট:

new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');

1
মাসটি 2 অঙ্কের হতে পারে তা নিশ্চিত করার জন্য এটি 0 এর সাথে মাসগুলিকে প্যাড করে না।
আটটিলা সেজেরেমি

তুমি ঠিক বলছো. আমি পরে এটি নিজেই লক্ষ্য করেছি। ডাবল ডিজিট মাস এবং দিনগুলিতে তারিখের ফর্ম্যাটিংটি পরীক্ষা করার জন্য আপনাকে যত্নবান হতে হবে।
লনি সেরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.