জাভাস্ক্রিপ্টের তারিখটি yyyy-mm-dd হিসাবে ফর্ম্যাট করুন


382

ফর্ম্যাট সহ আমার একটি তারিখ আছে Sun May 11,2014। আমি কীভাবে এটি 2014-05-11জাভাস্ক্রিপ্ট ব্যবহার করে রূপান্তর করতে পারি ?

function taskDate(dateMilli) {
    var d = (new Date(dateMilli) + '').split(' ');
    d[2] = d[2] + ',';

    return [d[0], d[1], d[2], d[3]].join(' ');
}

var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));

উপরের কোডটি আমাকে একই তারিখের ফর্ম্যাট দেয় sun may 11,2014,। আমি এটা কিভাবে ঠিক করবো?


7
আমি সন্দেহ করি যে উপরের কোডটি আপনাকে সিনট্যাক্স ত্রুটি ছাড়া অন্য কিছু দেয়।
প্ল্লেক্স

সত্যিই Moment.js এর মতো একটি লাইব্রেরি ব্যবহার করে বিবেচনা করুন। এটি পছন্দসই
অঙ্কুর

5
5 লাইনের কোড যখন কাজ করতে পারে তখন কেন একটি লাইব্রেরি ব্যবহার করা উচিত? @ অঙ্কুর
কালো মাম্বা


সম্পর্কিত: জাভাস্ক্রিপ্টে বৈধ তারিখের স্ট্রিংগুলি কী কী? মনে রাখবেন যে "সান মে 11,2014" কোনও বৈধ তারিখের স্ট্রিং নয় এবং এটি পার্সিং কিছু ব্রাউজারে ব্যর্থ হতে পারে।
Str

উত্তর:


524

আপনি করতে পারেন:

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2) 
        month = '0' + month;
    if (day.length < 2) 
        day = '0' + day;

    return [year, month, day].join('-');
}

ব্যবহারের উদাহরণ:

alert(formatDate('Sun May 11,2014'));

আউটপুট:

2014-05-11

জেএসফিডেলে ডেমো: http://jsfiddle.net/abdulrauf6182012/2Frm3/


11
একই বিবৃতিতে সত্যই একাধিক পরিবর্তনশীল ঘোষণা? stackoverflow.com/questions/694102/...
bhspencer

8
@ ফুসার97381 একই বিবৃতিতে একাধিক চলক ঘোষণা কেবল একটি নান্দনিক শৈলীর পছন্দ বেশি নয়। এটি একটি বিপজ্জনক অনুশীলন। আপনি যদি অজান্তে প্রতিটি ঘোষণার পরে কমা যোগ করতে ব্যর্থ হন তবে আপনি বৈশ্বিক ভেরিয়েবলগুলি তৈরি করবেন। এমন কোনও বিষয় নয় যা উত্সাহিত করা উচিত যা কোনও প্রশ্নের আধ্যাত্মিক উত্তর হতে পারে।
bhspencer

6
'use strict';@bhspencer
Vix

3
একটি তারিখের স্ট্রিং পুনরায় ফর্ম্যাট করা বিল্ট-ইন পার্সার দ্বারা অ-মানক স্ট্রিংগুলির সফল পার্সিংয়ের উপর নির্ভর করবে না। ওপি ফর্ম্যাট দেওয়া, এটি কোনও ডেট ব্যবহার না করেই কম কোডে পুনরায় ফর্ম্যাট করা যায়।
রবজি

1 ~ 31 রেঞ্জের আরও 30 দিন বাড়ানো কীভাবে?
স্টিভ অ্যাঞ্জেলো

455

কেবল বিল্ট-ইন toISOStringপদ্ধতিটি উপার্জন করুন যা আপনার তারিখটি আইএসও 8601 ফর্ম্যাটে নিয়ে আসে:

yourDate.toISOString().split('T')[0]

যেখানে আপনার তারিখ আপনার তারিখের অবজেক্ট।

সম্পাদনা করুন: কিছু লোক মন্তব্যগুলিতে সময় অঞ্চল পরিচালনা করতে এটি লিখেছিল:

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]

238
এটি প্রথমে ইউটিসিতে রূপান্তরিত হওয়ার সাথে সাথে এই পদ্ধতির সাথে যত্নবান হন BE আপনি যদি + টাইমজোন এ থাকেন এবং আপনার সময়ের অংশটি দিনের প্রথম দিকে হয় তবে এটি কোনও দিন ঘুরে ফিরে আসতে পারে। বিকল্পভাবে, আপনি যদি কোনও - সময় অঞ্চল এবং আপনার সময়ের অংশটি দিন দেরিতে হয়, তবে এটি কোনও দিন এগিয়ে যেতে পারে।
লুক বাউলচ

4
পরিবর্তে এটি চেষ্টা করুন:new Date(yourDateStr).toISOString().split('T')[0]
এক্সবুদ্ধ

24
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0]
এটির

5
now.toISOString().substring(0,10); এটি একটি পরিচ্ছন্ন বিকল্প, যেহেতু এটি আপনাকে স্মরণ করিয়ে দেয় যে YYYY-MM-DDসম্পূর্ণ আইসো ফর্ম্যাটটির প্রথম দশটি অক্ষর
গুতিমোর ২

4
নোট: সহায়ক সমাধান @mjwrazor দ্বারা মন্তব্য ব্যবহার করে, আমি পরিবর্তে বিয়োগ যোগ করার জন্য ছিল সঠিক তারিখ (পরিবর্তন পেতে অফসেট + (offsetএকটি থেকে - (offset)
রকোকো

135

Yyyy-mm-dd ফর্ম্যাটটিতে তারিখটি পেতে আমি এইভাবে ব্যবহার করি

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

14
এখানে @ লুক_বাউলচের উল্লেখ অনুসারে আপনি কীভাবে কোনও দিন তারিখের স্যুইচিং পরিচালনা করবেন?
মালভাইনাস

7
আপনি এটি করতে পারেন: var আজ তারিখ = নতুন তারিখ (); আজকের তারিখ.সেটমিনস (আজকের তারিখ.সেটমিন্টস () - আজ ডেট.সেটটাইমজোনঅফসেট ()); । todayDate.toISOString () ফালি (0,10); এটি ইউটিসি সমস্যা এড়াতে সহায়তা করবে।
ফার্নান্দো আগুইলার

1
@ ফার্নান্দো অগুইলার যদিও সন্দেহ আছে, আমরা কীভাবে জানি যে আমাদের অফসেটটি বিয়োগ বা এটি যুক্ত করা দরকার?
এতো 8

var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);আমাকে দেয় "2018-03-25"। অন্য একটি সিস্টেম var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);আমাকে দেয় "2018-03-27"
সালমান এ

2
সবসময় কাজ করে না। এটি কখনও কখনও ইউটিসি রূপান্তরের কারণে একটি দিন বিয়োগ করে।
নিক

110

আপনার তারিখটিকে yyyy-mm-dd ফর্ম্যাটে রূপান্তর করার সহজ উপায়টি হ'ল:

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

কিভাবে এটা কাজ করে:

  • new Date("Sun May 11,2014")স্ট্রিংটিকে "Sun May 11,2014"একটি তারিখের অবজেক্টে রূপান্তর করে যা Sun May 11 2014 00:00:00বর্তমান লোকেলের (হোস্ট সিস্টেমের সেটিংস) উপর ভিত্তি করে সময় অঞ্চলে সময়কে উপস্থাপন করে
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))আপনার তারিখটিকে এমন এক তারিখের অবজেক্টে রূপান্তর করে যা Sun May 11 2014 00:00:00ইউটিসির (মানক সময়) সময়ের সাথে সামঞ্জস্য করে টাইম অঞ্চল অফসেট বিয়োগ করে
  • .toISOString() তারিখের অবজেক্টটিকে আইএসও 8601 স্ট্রিংয়ে রূপান্তর করে 2014-05-11T00:00:00.000Z
  • .split("T") অ্যারে স্ট্রিং বিভক্ত ["2014-05-11", "00:00:00.000Z"]
  • [0] যে অ্যারের প্রথম উপাদান লাগে

ডেমো

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);


20
আর কারওই গায়ে লাগছে না যে এটাই সহজ উপায় ??
ফাঁক

.toISOString () যদিও দিবালোক সংরক্ষণের সাথে সঠিকভাবে কাজ করে না।
জো এর আইডিয়া

2
@ জোডেমমন: আমি এখানে দেখতে পারি না যে এটি কীভাবে প্রাসঙ্গিক। - (date.getTimezoneOffset() * 60000 )বিট দিবালোক সংরক্ষণ সময়ের প্রভাব সহ যেকোন সময় অঞ্চল পার্থক্য, নিষ্কাশন করা উচিত নয়।
জন স্লেজার

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

2
জেএসে তারিখগুলি সহ টাইমজোন সমস্যাগুলি মোকাবিলার সর্বোত্তম উপায় খুঁজে বের করার জন্য, এসও এবং অন্যান্য সাইটগুলিতে আমি উচ্চ এবং নিম্ন সন্ধান করেছি এবং এটি হাতছাড়া, এটি এখন পর্যন্ত সবচেয়ে সহজ এবং সর্বোত্তম। ধন্যবাদ!
হার্টলেসান

34
format = function date2str(x, y) {
    var z = {
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) {
        return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2)
    });

    return y.replace(/(y+)/g, function(v) {
        return x.getFullYear().toString().slice(-v.length)
    });
}

ফলাফল:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11

1
আমি অতিরিক্ত নমনীয়তা পছন্দ করি যা এই প্রশ্নের এই উত্তরটির উত্তরগুলি দেয়। আমি এটিকে পুরোপুরি পরীক্ষা করে দেখিনি, তবে আমি যে ফর্ম্যাটটি চেয়েছিলাম তার জন্য (যেমন "yyyy-MM-dd hh: mm: ss"), এটি প্রত্যাশার মতোই কাজ করে।
পরকাস

3
আপনি এআআআআআআআআএসআইলি এড়াতে পারতেন eval
সালমান এ

3
এখানে এমন একটি সংস্করণ যা এভালটি
m1m1k

2
আমি এই প্রতিক্রিয়া থেকে উপকৃত। আমি সেই লাইনটির return ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
প্রতিচ্ছবি

26

উত্তরের কয়েকটি সংমিশ্রণ:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');

আমি সমাধানটি সবচেয়ে ভাল পছন্দ করি - পড়তে সহজ, এবং toISOString()সেই ফাংশনটি ব্যবহার করে নির্ভর করে না এবং সম্ভাব্য টাইমজোন সমস্যার সম্ভাবনা রয়েছে।
matt.fc 12'19

এটিই প্রথম যা আমার মস্তিষ্ককে আঘাত দেয় না।
ckapilla

22

আপনার যদি গ্রন্থাগার ব্যবহারের বিরুদ্ধে কিছু না থাকে তবে আপনি কেবল মোমেন্টস.জেস লাইব্রেরিটি ব্যবহার করতে পারেন:

var now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');

var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


দুর্দান্ত সমাধান, তবে এটি একটি 300kb প্যাকেজ
অ্যাডাম

13

কেবল এটি ব্যবহার করুন:

var date = new Date('1970-01-01'); // Or your date here
console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' +  date.getFullYear());

সহজ এবং মিষ্টি;)


4
প্যাডিং 2 অক্ষরের বিন্যাসের জন্য নেই। এটি তারিখ বা মাস 10 এর চেয়ে কম হলে এটি একক অঙ্ক দেখায় যে কারণে এটি সরাসরি ব্যবহার করতে পারে না।
ইয়াতেদার সিং

হ্যাঁ, তবে এটি জাভাস্ক্রিপ্ট ব্যবহার করেই সাধিত হতে পারে, এটি আপনার প্রয়োজন পর্যন্ত আমার মনে হয়, তাই না? @ ইয়টেন্দ্রসিংহ
জৈন

4
হ্যাঁ ঠিক তবে প্রশ্নটির শিরোনামটি "yyyy-mm-dd" ফর্ম্যাটটি
যাচাই করে দেখুন

var old_date = নতুন তারিখ (তারিখ); var new_date = old_date.getFearYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
আবদুল রাজাক

1
গ্রেট। এটি কাজ করেছে এবং সহজ এবং সংক্ষিপ্ত ছিল!
ওালিদ 9৩

12

toISOString()আপনার তারিখ স্থানীয় সময় হিসাবে ধরে এবং এটি ইউটিসিতে রূপান্তর করে। আপনি একটি ভুল তারিখের স্ট্রিং পাবেন।

নিম্নলিখিত পদ্ধতিতে আপনার যা প্রয়োজন তা ফিরিয়ে দেওয়া উচিত।

Date.prototype.yyyymmdd = function() {         

    var yyyy = this.getFullYear().toString();                                    
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based         
    var dd  = this.getDate().toString();             

    return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};

সূত্র: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/


8

বছর, মাস এবং দিন পুনরুদ্ধার করুন এবং তারপরে তাদের একসাথে রাখুন। সোজা, সরল এবং নির্ভুল।

function formatDate(date) {
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 101).toString().substring(1);
    var day = (date.getDate() + 100).toString().substring(1);
    return year + "-" + month + "-" + day;
}

//Usage example:
alert(formatDate(new Date()));


8

আপনি ব্যবহার করতে পারেন toLocaleDateString('fr-CA')উপর Dateবস্তু

console.log(new Date('Sun May 11,2014').toLocaleDateString('fr-CA'));

এছাড়াও আমি জানতে পেরেছি যে এই লোকেলগুলি এই লোকেলগুলি থেকে সমস্ত লোকেলের তালিকা এবং তাদের সংক্ষিপ্ত কোডগুলির তালিকা থেকে সঠিক ফলাফল দেয় ?

'en-CA'
'fr-CA'
'lt-LT'
'sv-FI'
'sv-SE'


কোন ধারণা কেন এটি কাজ করে? আইএসও ফর্ম্যাটটি কি কেবল ডিফল্ট, নাকি এই লোকেলগুলি সত্যই সেই বিন্যাসটি ব্যবহার করে? যদি এটি পূর্বের হয় তবে আমি উদ্বিগ্ন যে ভবিষ্যতে এটি অপ্রত্যাশিতভাবে পরিবর্তিত হতে পারে।
jymbob

এটি ব্রাউজারের বাইরে নোডজেএসের সাথে কাজ করছে না।
দোনাতো

@ জাইম্বব আমি মনে করি এই লোকেলগুলি সত্যই সেই ফর্ম্যাটগুলি ব্যবহার করে। : আমি করেছি এই Wikipedia পৃষ্ঠা দিকে তাকিয়ে একই উত্তর আসেন en.wikipedia.org/wiki/Date_format_by_country
Ciprián Tomoiagă

5

টাইমজোনটিও বিবেচনা করার জন্য, এই ওয়ান-লাইনারটি কোনও লাইব্রেরি ছাড়াই ভাল হওয়া উচিত:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

5

আপনি এটি চেষ্টা করতে পারেন: https://www.npmjs.com/package/timesolver

npm i timesolver

আপনার কোডে এটি ব্যবহার করুন:

const timeSolver = require('timeSolver');
const date = new Date();
const dateString = timeSolver.getString(date, "YYYY-MM-DD");

আপনি এই পদ্ধতিটি ব্যবহার করে তারিখের স্ট্রিং পেতে পারেন:

getString

4

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

এটিই আমি নিয়ে এসেছি:

function localDay(time) {
  var minutesOffset = time.getTimezoneOffset()
  var millisecondsOffset = minutesOffset*60*1000
  var local = new Date(time - millisecondsOffset)
  return local.toISOString().substr(0, 10)
}

এটি তারিখের দিনটি YYYY-MM-DD ফর্ম্যাটে, সময় অঞ্চলে তারিখের উল্লেখগুলি ফিরিয়ে আনবে।

সুতরাং উদাহরণস্বরূপ, এটি ইউটিসি-তে ইতিমধ্যে 24 তম থাকলেও localDay(new Date("2017-08-24T03:29:22.099Z"))ফিরে আসবে "2017-08-23"

ইন্টারনেট এক্সপ্লোরার 8 এ কাজ করার জন্য আপনার পলিফিল ডেট.প্রোটোটাইপ.টোআইএসএস স্ট্রিং করতে হবে তবে এটি অন্য কোথাও সমর্থন করা উচিত।


সম্ভবত লক্ষণীয় যে আপনি কেবলমাত্র ইউটিসির পিছনে (যেমন মার্কিন যুক্তরাষ্ট্রে) পিছনে থাকলে তা কেবল আপনাকে 2017-08-23 দেবে।
সাইমন ডি

3

আমি প্রতিবার প্রতিলিপি চেষ্টা করার পরিবর্তে ফর্ম্যাটডেট-জেএস জাতীয় কিছু ব্যবহার করার পরামর্শ দিচ্ছি । কেবলমাত্র একটি লাইব্রেরি ব্যবহার করুন যা সমস্ত বড় স্ট্রফটাইম ক্রিয়াকে সমর্থন করে।

new Date().format("%Y-%m-%d")

3
new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

অথবা

new Date().toISOString().split('T')[0]
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString()
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString().split('T')[0]

এটা চেষ্টা কর!


দ্বিতীয় বিকল্পটি ভুল তারিখটি প্রদর্শন করতে পারে কারণ এটি ইউটিসি টাইমজোনটিতে ডেটা প্রদর্শন করবে।
কখনও দেব

2

এটি করার একটি উপায় এখানে:

var date = Date.parse('Sun May 11,2014');

function format(date) {
  date = new Date(date);

  var day = ('0' + date.getDate()).slice(-2);
  var month = ('0' + (date.getMonth() + 1)).slice(-2);
  var year = date.getFullYear();

  return year + '-' + month + '-' + day;
}

console.log(format(date));



1

var d = new Date("Sun May 1,2014");

var year  = d.getFullYear();
var month = d.getMonth() + 1;
var day   = d.getDate(); 

month = checkZero(month);             
day   = checkZero(day);

var date = "";

date += year;
date += "-";
date += month;
date += "-";
date += day;

document.querySelector("#display").innerHTML = date;
    
function checkZero(i) 
{
    if (i < 10) 
    {
        i = "0" + i
    };  // add zero in front of numbers < 10

    return i;
}
<div id="display"></div>


1
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)

1

পূর্বের কয়েকটি উত্তর ঠিক ছিল তবে সেগুলি খুব নমনীয় ছিল না। আমি এমন কিছু চেয়েছিলাম যা সত্যিকার অর্থে আরও প্রান্তের কেসগুলি পরিচালনা করতে পারে, তাই আমি @ ওরেংলিইউয়ের উত্তর নিয়েছি এবং এটিতে প্রসারিত করেছি। https://jsfiddle.net/8904cmLd/1/

function DateToString(inDate, formatString) {
    // Written by m1m1k 2018-04-05

    // Validate that we're working with a date
    if(!isValidDate(inDate))
    {
        inDate = new Date(inDate);
    }

    // See the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014', 'USA');
    //formatString = CountryCodeToDateFormat(formatString);

    var dateObject = {
        M: inDate.getMonth() + 1,
        d: inDate.getDate(),
        D: inDate.getDate(),
        h: inDate.getHours(),
        m: inDate.getMinutes(),
        s: inDate.getSeconds(),
        y: inDate.getFullYear(),
        Y: inDate.getFullYear()
    };

    // Build Regex Dynamically based on the list above.
    // It should end up with something like this: "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g"
    var dateMatchRegex = joinObj(dateObject, "+|") + "+";
    var regEx = new RegExp(dateMatchRegex,"g");
    formatString = formatString.replace(regEx, function(formatToken) {
        var datePartValue = dateObject[formatToken.slice(-1)];
        var tokenLength = formatToken.length;

        // A conflict exists between specifying 'd' for no zero pad -> expand
        // to '10' and specifying yy for just two year digits '01' instead
        // of '2001'.  One expands, the other contracts.
        //
        // So Constrict Years but Expand All Else
        if (formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0)
        {
            // Expand single digit format token 'd' to
            // multi digit value '10' when needed
            var tokenLength = Math.max(formatToken.length, datePartValue.toString().length);
        }
        var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : "");
        return (zeroPad + datePartValue).slice(-tokenLength);
    });

    return formatString;
}

ব্যবহারের উদাহরণ:

DateToString('Sun May 11,2014', 'MM/DD/yy');
DateToString('Sun May 11,2014', 'yyyy.MM.dd');
DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');

ভাল পরিষ্কার এবং মন্তব্য সমাধান। তবুও আমি প্রথম তর্কটি সম্পর্কে সন্দেহবাদী, যা বৈধ তারিখ হিসাবে স্বীকৃত না হলে নীরবে একটি নতুন নতুন তারিখ দ্বারা প্রতিস্থাপিত হয়। পরিবর্তে আমি এই "nচ্ছিক ডিফল্ট মান" এর পরিবর্তে ২ য় আর্গুমেন্ট হিসাবে রেখেছি এবং ফর্ম্যাটটি স্বীকৃত না হলে কিছুটা ব্যতিক্রম (একটি সহজ "অবৈধ তারিখের ফর্ম্যাট" ফেরত স্ট্রিং হতে পারে) ফিরতি দিয়েছি, যাতে ত্রুটিটি স্পষ্টভাবে উপস্থিত হয় পরীক্ষক / ব্যবহারকারী
বাল্মিপুর

1

এটি আমার জন্য পছন্দসই ফর্ম্যাটে বর্তমান তারিখটি পাওয়ার জন্য কাজ করেছে (ওয়াইওয়াইওয়াইএমএমডিডি এইচ: এমএম: এসএস):

var d = new Date();

var date1 = d.getFullYear() + '' +
            ((d.getMonth()+1) < 10 ? "0" + (d.getMonth() + 1) : (d.getMonth() + 1)) +
            '' +
            (d.getDate() < 10 ? "0" + d.getDate() : d.getDate());

var time1 = (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) +
            ':' +
            (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) +
            ':' +
            (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());

print(date1+' '+time1);

1

কোনও লাইব্রেরির দরকার নেই

খাঁটি জাভাস্ক্রিপ্ট।

নীচের উদাহরণটি আজ থেকে শেষ দুই মাস পেয়েছে:

var d = new Date()
d.setMonth(d.getMonth() - 2);
var dateString = new Date(d);
console.log('Before Format', dateString, 'After format', dateString.toISOString().slice(0,10))


বিপজ্জনক। সেক্ষেত্রে আপনি টাইমজোন অফসেটটিকে উপেক্ষা করবেন।
maxence51

1

পিএইচপি সুসংগত তারিখ বিন্যাস

এখানে একটি ছোট ফাংশন যা পিএইচপি ফাংশন হিসাবে একই পরামিতি নিতে পারে date()এবং জাভাস্ক্রিপ্টে একটি তারিখ / সময়ের স্ট্রিং ফিরিয়ে দিতে পারে।

নোট করুন যে পিএইচপি থেকে সমস্ত তারিখ () ফর্ম্যাট বিকল্পগুলি সমর্থিত নয়। partsঅনুপস্থিত বিন্যাস-টোকেন তৈরি করতে আপনি অবজেক্টটি প্রসারিত করতে পারেন

/**
 * Date formatter with PHP "date()"-compatible format syntax.
 */
const formatDate = (format, date) => {
  if (!format) { format = 'Y-m-d' }
  if (!date) { date = new Date() }

  const parts = {
    Y: date.getFullYear().toString(),
    y: ('00' + (date.getYear() - 100)).toString().slice(-2),
    m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
    n: (date.getMonth() + 1).toString(),
    d: ('0' + date.getDate()).toString().slice(-2),
    j: date.getDate().toString(),
    H: ('0' + date.getHours()).toString().slice(-2),
    G: date.getHours().toString(),
    i: ('0' + date.getMinutes()).toString().slice(-2),
    s: ('0' + date.getSeconds()).toString().slice(-2)
  }

  const modifiers = Object.keys(parts).join('')
  const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
  const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')

  return format
    .replace(reDate, $0 => parts[$0])
    .replace(reEscape, ($0, $1) => $1)
}

// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"

সারকথা

এখানে formatDate()ফাংশনটির একটি আপডেট সংস্করণ এবং অতিরিক্ত উদাহরণ সহ একটি সংক্ষেপ রয়েছে : https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9


0

উত্তরগুলির আরও একটি সংমিশ্রণ। সুন্দরভাবে পাঠযোগ্য, তবে কিছুটা লম্বা।

function getCurrentDayTimestamp() {
  const d = new Date();

  return new Date(
    Date.UTC(
      d.getFullYear(),
      d.getMonth(),
      d.getDate(),
      d.getHours(),
      d.getMinutes(),
      d.getSeconds()
    )
  // `toIsoString` returns something like "2017-08-22T08:32:32.847Z"
  // and we want the first part ("2017-08-22")
  ).toISOString().slice(0, 10);
}

0

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

আরও ভাল, এই ধরণের বিন্যাসের জন্য Moment.js তারিখের পাঠাগারটি ব্যবহার করুন।


0

আমি সামিত সাতপুটের প্রতিক্রিয়া নিম্নরূপে সংশোধন করেছি :

var newstartDate = new Date();
// newstartDate.setDate(newstartDate.getDate() - 1);
var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format
console.log(startDate);


0

হ্যাশম্যাপ ডেটা থেকে সর্বাধিক এবং সর্বনিম্ন তারিখ ফর্ম্যাট এবং সন্ধান করুন:

var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};

function findMaxMinDate(obj){
  let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
  let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
  let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
  let min = new Date(Math.min.apply(null, arr)).toLocaleDateString();
  let max = new Date(Math.max.apply(null, arr)).toLocaleDateString();
  return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}

console.log(findMaxMinDate(obj));


এটি কীভাবে প্রশ্নের সাথে সম্পর্কিত (একটি তারিখের বিন্যাসকরণ)?
পিটার মর্টেনসেন

0

একটি তারিখের স্ট্রিং পুনরায় ফর্ম্যাট করা মোটামুটি সোজা, যেমন

var s = 'Sun May 11,2014';

function reformatDate(s) {
  function z(n){return ('0' + n).slice(-2)}
  var months = [,'jan','feb','mar','apr','may','jun',
                 'jul','aug','sep','oct','nov','dec'];
  var b = s.split(/\W+/);
  return b[3] + '-' +
    z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' +
    z(b[2]);
}

console.log(reformatDate(s));

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