একটি আইএসও তারিখটিকে জাভাস্ক্রিপ্টে yyyy-mm-dd তারিখের ফর্ম্যাটে রূপান্তর করুন


119

আইএসও 8601 তারিখের সাথে yyyy-mm-dd ফর্ম্যাট থাকার তারিখটি কীভাবে পেতে পারি ?

আমার 8601 তারিখটি

2013-03-10T02:00:00Z

আমি কিভাবে নিম্নলিখিত পেতে পারি?

2013-03-10

4
আপনি কি আসলে এটি করার চেষ্টা করেছেন? এটি কোনও নতুন প্রশ্ন নয় যা এর একাধিকবার উত্তর দেওয়া হয়েছে।
বিপ্রতিক


16
date.split("T")[0]করবেন
অরবিন্দ গোপী

উত্তর:


106

এটা চেষ্টা কর

date = new Date('2013-03-10T02:00:00Z');
date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.

হালনাগাদ:-

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

date = new Date('2013-08-03T02:00:00Z');
year = date.getFullYear();
month = date.getMonth()+1;
dt = date.getDate();

if (dt < 10) {
  dt = '0' + dt;
}
if (month < 10) {
  month = '0' + month;
}

console.log(year+'-' + month + '-'+dt);


17
দ্রষ্টব্য, আমি মনে করি না এটি দিন বা মাসের জন্য একটি নেতৃস্থানীয় শূন্য প্রিন্ট করবে
ব্যবহারকারী 3413723

4
@ ব্যবহারকারী 3413723 এর সাথে একমত হোন এটি প্রশ্নের উত্তর দেয় না কারণ এটি শীর্ষস্থানীয় 0 সরিয়ে দেয় তাই ওয়াইওয়াইওয়াই-এমএম-ডিডি ফর্ম্যাটটির প্রয়োজনীয়তা পূরণ করে না
জেমস মারফি

ঠিকঠাক কাজ করছেন @ মৃতুঞ্জয়
রবি ডিলিক্সন

এটি ড্রাইভবিপোস্টারের উত্তরের তুলনায় দীর্ঘতর এবং বেশি টাইপো-প্রোন। তবে আমি কোনও ডাউন-ভোট দেব না কারণ এটি ভাষা-অজ্ঞাত জ্ঞাত more এটি কেবল আমাদের নিষ্পত্তি করার সহজ সরঞ্জামগুলি ব্যবহার করে না।
রোবোটিক রেনেসাঁ

স্যার আপনি দয়া করে আমাকে কীভাবে বলবেন 2013 3 1 এই ফরম্যাটের তারিখটি নতুন তারিখে (তারিখ)
কপিল সোনি

154

কেবল স্ট্রিং ক্রপ করুন:

var date = new Date("2013-03-10T02:00:00Z");
date.toISOString().substring(0, 10);

অথবা আপনার যদি স্ট্রিংয়ের কেবলমাত্র তারিখের প্রয়োজন হয়।

var strDate = "2013-03-10T02:00:00Z";
strDate.substring(0, 10);

4
আমি মনে করি এগুলি থেকে এটি সবচেয়ে সহজ এবং সর্বাধিক মার্জিত সমাধান তবে এখানে কি এর কোনও পতন রয়েছে?
এইডা_এডা

34
@ আইডা_এডা কেবলমাত্র আমি ভাবতে পারি যে আপনার কোডটি যদি ভবিষ্যতে কমপক্ষে 8000 বছর সময়কালীন জিওলিকাল স্কেল সময়ের সাথে সম্পর্কিত হয় তবে আপনার কোডটি ভেঙে যেতে পারে কারণ ফর্ম্যাটটি YYYYY-MM-DD10000 বছরে থাকবে । এটি এড়াতে আপনি বিভক্ত হতে পারেন Tপরিবর্তে চরিত্র। (দেখুন en.wikipedia.org/wiki/Year_10,000_problem )
apsillers

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

4
পছন্দ করুন একটি গুরুত্বপূর্ণ বিবেচনা কিন্তু এটি
ওপি'র

স্ট্রিংটি কেন একটি তারিখে পার্স করা উচিত তা আমি জানতে পারি না। সাবস্ট্রিং বিকল্প সরলতম উত্তর বলে মনে হয়।
রবজি

50

আপনি সুন্দর তারিখের কারসাজির জন্য মোমেন্ট.জেএস , লাক্সন , ডেট-এফএনএস বা ডে.জেএস চেকআউট করতে পারেন ।

অথবা কেবল আপনার আইএসও স্ট্রিংয়ের প্রথম অংশটি বের করুন, এতে ইতিমধ্যে আপনি যা চান তা রয়েছে। এখানে বিভক্ত হয়ে একটি উদাহরণ T:

"2013-03-10T02:00:00Z".split("T")[0] // "2013-03-10"

19

কেবলমাত্র তারিখ পেতে আমি এটিই করি:

let isoDate = "2013-03-10T02:00:00Z";

alert(isoDate.split("T")[0]);


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

4
টোআইএসএসটিং ইউটিসি ব্যবহার করে, যা মধ্যরাত থেকে অফসেট স্থানীয় সময় অঞ্চল জন্য ভুল স্থানীয় তারিখ উত্পাদন করবে। - রবজি
মাইকেল ডিম্মিট

16

Moment.js আপনার জন্য তারিখ বিন্যাস পরিচালনা করবে। এটি একটি জাভাস্ক্রিপ্ট ট্যাগের মাধ্যমে কীভাবে অন্তর্ভুক্ত করবেন এবং তারপরে একটি তারিখের ফর্ম্যাট করতে মোমেন্ট.জেএস কীভাবে ব্যবহার করবেন তার উদাহরণ এখানে।

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
moment("2013-03-10T02:00:00Z").format("YYYY-MM-DD") // "2013-03-10"

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

4
momentকেবলমাত্র বিন্যাসকরণের জন্য ব্যবহার করার জন্য একটি বিশাল বিশাল গ্রন্থাগার। বরং ডেট-এফএনএস ব্যবহার করুন যা আকারে অনেক ছোট এবং একই কার্যকারিতা দেয়।
হোজেফা

@ হোজেফা, তারপরে আপনার সমাধান দিয়ে ওপি প্রশ্নের উত্তর দিন।
হারিস

4
@ হারিস - কাজটি সুচারুভাবে করলেন!
হাদিদালী

আমি আশা করি মুহুর্তের মতো কিছু কাজ হয়েছে .toISODateString(), কারণ এটি খুব ঘন ঘন ঘটনা ...
লেভ লুকুকসকি

10

একক ব্যবহারের ক্ষেত্রে মোমেন্ট.জেএস হ'ল বেশ বড় লাইব্রেরি। আমি date-fnsপরিবর্তে ব্যবহার করার পরামর্শ দিচ্ছি । এটি মূলত অনেক ছোট বান্ডিল আকার এবং অনেকের সাথে মোমেন্ট.জেএস এর সর্বাধিক কার্যকারিতা সরবরাহ করে formatting options

import format from 'date-fns/format'
format('2013-03-10T02:00:00Z', 'YYYY-MM-DD'); // 2013-03-10, YYYY-MM-dd for 2.x

একটি বিষয় লক্ষণীয়, এটি যেহেতু এটি আইএসও 8601 টাইম ফর্ম্যাট, তাই ব্রাউজারটি সাধারণত ইউটিসি সময় থেকে স্থানীয় সময় অঞ্চলে রূপান্তর করে। যদিও এটি সাধারণ ব্যবহারের ক্ষেত্রে আপনি সম্ভবত এটি করতে পারেন '2013-03-10T02:00:00Z'.substring(0, 10);

আরও জটিল রূপান্তরগুলির date-fnsজন্য যাওয়ার উপায়।


moment.js আর রক্ষণাবেক্ষণ করা হয় momentjs.com/docs/#/-project-status
মাইকমেকানা

7

let isoDate = "2013-03-10T02:00:00Z";
var d = new Date(isoDate);
d.toLocaleDateString('en-GB'); // dd/mm/yyyy
d.toLocaleDateString('en-US'); // mm/dd/yyyy


4
d.toLocaleDateString ('এন জিবি'); একটি যাদুমন্ত্র মত কাজ করে. দুর্দান্ত উত্তর!
ডোনাল্ড শাহিনী


5

তারিখ অবজেক্টে আপনার তারিখটি পাস করুন:

var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');

4
toLocaleDateString () "/" ফর্ম্যাটে দেবে। "-" বিন্যাস নয়।
টেকক্রাঞ্চ

আপনি উপরেরটি "/" সাথে "-" প্রতিস্থাপনের সাহায্যে ব্যবহার করতে পারেন। যদি লোকালডেটস্ট্রিং কখনও পরিবর্তন হয় তবে সর্বাধিক মার্জিত নয়
জেমস মারফি

টোকল্যাডেটস্ট্রিংয়ের ফলাফলটি সকল ব্যবহারকারীর পক্ষে সামঞ্জস্যপূর্ণ নয়, সুতরাং ওপি-র প্রয়োজনীয় ফলাফলটি ভালভাবে নাও তৈরি করতে পারে।
রবজি

5

তারিখটি পাওয়ার জন্য যারা বিভাজন, স্লাইস এবং অন্যান্য স্ট্রিং-ভিত্তিক প্রচেষ্টা ব্যবহার করছেন তাদের কাছে আপনি টাইমজোন সম্পর্কিত ব্যর্থতার জন্য নিজেকে সেট আপ করতে পারেন!

কোনও আইএসও-স্ট্রিংয়ের জুলু-টাইমজোন এবং এই টাইমজোন অনুসারে একটি তারিখ রয়েছে, যার অর্থ এটি আসল টাইমজোনটির একদিন আগে বা পরে একটি তারিখ ব্যবহার করতে পারে, যা আপনাকে আপনার রূপান্তর শৃঙ্খলে বিবেচনায় নিতে হবে।

এই উদাহরণটি দেখুন:

const timeZoneRelatedDate = new Date(2020, 0, 14, 0, 0);

console.log(timeZoneRelatedDate.toLocaleDateString(
    'ja-JP', 
    {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit'
    }
).replace(/\//gi,'-'));

// RESULT: "2020-01-14"

console.log(timeZoneRelatedDate.toISOString());

// RESULT: "2020-01-13T23:00:00.000Z" (for me in UTC+1)

console.log(timeZoneRelatedDate.toISOString().slice(0,10));

// RESULT: "2020-01-13"

4

এটি YYYY-MM-DD ফর্ম্যাটে তারিখটিকে আউটপুট দেবে:

let date = new Date();
date = date.toISOString().slice(0,10);

আমি জানি না কেন এটি বেশি ভোট পাচ্ছে না, এটি নিখুঁতভাবে কাজ করেছে এবং ন্যূনতম প্রচেষ্টা দিয়ে প্রশ্নের উত্তর দিয়েছে
ওল্ফিবিবে

3

আপনার যদি একটি তারিখ অবজেক্ট থাকে:

let date = new Date()
let result = date.toISOString().split`T`[0]

console.log(result)

বা

let date = new Date()
let result = date.toISOString().slice(0, 10)

console.log(result)


4
টোআইএসএসটিং ইউটিসি ব্যবহার করে, যা মধ্যরাত থেকে অফসেট স্থানীয় সময় অঞ্চল জন্য ভুল স্থানীয় তারিখ উত্পাদন করবে।
রবজি

1

উপর প্রসারিত করতে আর কে আর কে 'সমাধান গুলি : যদি আপনি সময় অন্তর্ভুক্ত করা বিন্যাস চান, আপনি যোগ করতে পারেন toTimeString()আপনার স্ট্রিং, এবং তারপর জিএমটি অংশ স্ট্রিপ, যেমন নিম্নরূপ:

var d = new Date('2013-03-10T02:00:00Z');
var fd = d.toLocaleDateString() + ' ' + d.toTimeString().substring(0, d.toTimeString().indexOf("GMT"));

1

@ হোজেফা দ্বারা উত্তরের আরও ভাল সংস্করণ ।

আপনি date-fnsইনস্টল করা থাকলে, আপনি formatISO ফাংশনটি ব্যবহার করতে পারেন

const date = new Date(2019, 0, 2)
import { formatISO } from 'date-fns'
formatISO(date, { representation: 'date' }) // '2019-01-02' string

0

আমি এটি ব্যবহার করেছি:

HTMLDatetoIsoDate(htmlDate){
  let year = Number(htmlDate.toString().substring(0, 4))
  let month = Number(htmlDate.toString().substring(5, 7))
  let day = Number(htmlDate.toString().substring(8, 10))
  return new Date(year, month - 1, day)
}

isoDateToHtmlDate(isoDate){
  let date = new Date(isoDate);
  let dtString = ''
  let monthString = ''
  if (date.getDate() < 10) {
    dtString = '0' + date.getDate();
  } else {
    dtString = String(date.getDate())
  }
  if (date.getMonth()+1 < 10) {
    monthString = '0' + Number(date.getMonth()+1);
  } else {
    monthString = String(date.getMonth()+1);
  }
  return date.getFullYear()+'-' + monthString + '-'+dtString
}

সূত্র: http://gooplus.fr/en/2017/07/13/angular2-typescript-isodate-to-html-date/



0
let dt = new Date('2013-03-10T02:00:00Z');
let dd = dt.getDate();
let mm = dt.getMonth() + 1;
let yyyy = dt.getFullYear();

if (dd<10) {
    dd = '0' + dd;
}
if (mm<10) {
    mm = '0' + mm;
}
return yyyy + '-' + mm + '-' + dd;

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