আমি জেএসকে বিন্যাসে date object
স্ট্রিংয়ে রূপান্তর করতে ব্যবহার করার চেষ্টা করছি YYYYMMDD
। সেখানে concatenating চেয়ে একটি সহজ উপায় আছে Date.getYear()
, Date.getMonth()
এবং Date.getDay()
?
আমি জেএসকে বিন্যাসে date object
স্ট্রিংয়ে রূপান্তর করতে ব্যবহার করার চেষ্টা করছি YYYYMMDD
। সেখানে concatenating চেয়ে একটি সহজ উপায় আছে Date.getYear()
, Date.getMonth()
এবং Date.getDay()
?
উত্তর:
কোডের পরিবর্তিত টুকরা আমি প্রায়শই ব্যবহার করি:
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();
[1]
সাথে প্রতিস্থাপন করা উচিত .length===2
, কারণ স্ট্রিংয়ের কোনও সূচক সম্পূর্ণরূপে সমর্থিত নয়। কারণগুলির জন্য এই উত্তরটি দেখুন।
[this.getFullYear(), mm<10 ? '0'+ mm: mm, dd<10 ? '0'+ dd : dd].join('.')
var mm = (this.getMonth() + 101).toString().substring(1, 3)
আমি প্রোটোটাইপ যুক্ত করতে পছন্দ করি না। একটি বিকল্প হবে:
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;
rightNow
চারপাশের চলকের প্রয়োজন না হয় তবে আপনি new Date
একটি এক লাইনে (new Date()).toISOString().slice(0,10).replace(/-/g,"")
YYYYMMDDHHmmSSsss
, তাই আমি এটা করেছে: var ds = (new Date()).toISOString().replace(/[^0-9]/g, "");
। খুব সহজ, তবে এনকেপসুলেট করা উচিত।
rightNow.setMinutes(rightNow.getMinutes() - rightNow.getTimezoneOffset()); rightNow.toISOString().slice(0,10)
আপনি toISOString
ফাংশনটি ব্যবহার করতে পারেন :
var today = new Date();
today.toISOString().substring(0, 10);
এটি আপনাকে একটি "yyyy-mm-dd" ফর্ম্যাট দেবে।
var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
var formattedDate = moment().format('YYYYMMDD');
আপনার যদি খাঁটি জেএস সমাধানের প্রয়োজন না হয় তবে আপনি jQuery UI ব্যবহার করতে পারেন এই কাজটি করতে:
$.datepicker.formatDate('yymmdd', new Date());
আমি সাধারণত খুব বেশি লাইব্রেরি আমদানি করতে পছন্দ করি না। তবে jQuery UI এত কার্যকর, আপনি সম্ভবত এটি আপনার প্রকল্পের অন্য কোথাও ব্যবহার করবেন।
পরিদর্শন http://api.jqueryui.com/datepicker/ আরো উদাহরণ জন্য
এটি কোডের একক লাইন যা আপনি YYYY-MM-DD
আজকের তারিখের স্ট্রিং তৈরি করতে ব্যবহার করতে পারেন ।
var d = new Date().toISOString().slice(0,10);
toISOString()
2015-12-31T22 দেবে: 00: 00 GMT +0 (দুই ঘন্টা আগে)।
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'
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');
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 কিছুটা দ্রুত না হলে এটি কমপক্ষে আরও পঠনযোগ্য।
আমি নেটিভ অবজেক্টগুলিকে সংশোধন করতে পছন্দ করি না এবং আমি মনে করি গ্রহণযোগ্য দ্রবণটির প্যাডিংয়ের চেয়ে গুণটি আরও পরিষ্কার 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));
.replace('-', '')
এটি অপের প্রশ্নের উত্তর দেওয়ার জন্য করতে হবে), আপনি ওপির মূল প্রশ্নের সাথে সত্য ছিলেন এবং এটি অতিরিক্ত পদক্ষেপের প্রয়োজন হবে না। অসাধারণ!
ইউটিসিতে তারিখ.টোআইএসএসটিং () প্রিন্টিংয়ের কারণে কোনও সম্ভাব্য তারিখের ঝাঁপ সমস্যা ছাড়াই সরল জেএস (ইএস 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, '');
এটি @ পেয়ার গুইলবার্টের উত্তরে @ ওয়েবারস্টের মন্তব্যের জবাবে।
toISOString
একের পর এক হাইফেন কি ফিরে আসতে পারে ?
// 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
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);
new Date()
একটি নতুন তারিখ অবজেক্ট তৈরি করে যা কেবলমাত্র এনআর এর চারপাশে একটি মোড়ক। এমএস এর 1970/01/01 থেকে 00: 00: 00.000 ইউটিসি। তারপরে toISOString
স্থানীয় সময় অঞ্চলে মুদ্রণ করা।
আরেকটি উপায় হ'ল toLocaleDateString
লোকাল দিয়ে ব্যবহার করা যার বড় আকারের তারিখের ফর্ম্যাট মান রয়েছে , যেমন সুইডেন, লিথুয়ানিয়া, হাঙ্গেরি, দক্ষিণ কোরিয়া, ...:
date.toLocaleDateString('se')
সীমানা ছাড়ানো ( -
) কেবল অ-অঙ্কগুলি প্রতিস্থাপনের বিষয়:
console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );
এটিতে আপনি ইউটিসি তারিখের ফর্ম্যাটগুলি পেতে পারেন এমন সম্ভাব্য ত্রুটি নেই: স্থানীয় সময় অঞ্চলের তারিখের তুলনায় ইউটিসি তারিখ একদিনের ছুটি হতে পারে।
আপনি কেবল বছরের সাথে তারিখ পেতে এই এক লাইন কোডটি ব্যবহার করতে পারেন
var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
এই থ্রেডের সর্বাধিক জনপ্রিয় উত্তরের জন্য সামান্য বিট সরলীকৃত সংস্করণ 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;
}
ডেটফর্ম্যাট একটি খুব ব্যবহৃত প্যাকেজ।
ব্যবহারবিধি:
dateformat
এনপিএম থেকে ডাউনলোড এবং ইনস্টল করুন । এটি আপনার মডিউলে প্রয়োজনীয়:
const dateFormat = require('dateformat');
এবং তারপরে আপনার জিনিসগুলি ফর্ম্যাট করুন:
const myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
এই লোকটি এখানে => http://blog.stevenlevithan.com/archives/date-time-formatformat()
জাভাস্ক্রিপ্টের Date
অবজেক্টের জন্য একটি ফাংশন লিখেছেন , যাতে এটি পরিচিত আক্ষরিক ফর্ম্যাটগুলির সাথে ব্যবহার করা যায়।
আপনার অ্যাপ্লিকেশনটির জাভাস্ক্রিপ্টে যদি পুরো বৈশিষ্ট্যযুক্ত তারিখ বিন্যাসের প্রয়োজন হয় তবে এটি ব্যবহার করুন। অন্যথায় আপনি যা করতে চান তা যদি বন্ধ হয়, তবে getearear (), getMonth (), getDay () সম্ভবত সবচেয়ে সহজ।
@ 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);
আমি জানি না যে এটি কতটা দক্ষ, বিশেষত পারফ ওয়াইস কারণ এটি প্রচুর রেইগেক্স ব্যবহার করে। এটি সম্ভবত কিছু কাজ ব্যবহার করতে পারে আমি খাঁটি জেএস মাস্টার করি না।
দেখে মনে হচ্ছে যে মটুলগুলি সরবরাহ করে Date().format()
: https://mootools.net/more/docs/1.6.0/ টাইপস / তারিখ
আমি নিশ্চিত না যদিও এটি কেবল এই বিশেষ কাজের জন্য অন্তর্ভুক্ত করা উচিত।
যখন আমাকে এটি করার দরকার হয় আমি সাধারণত নীচের কোডটি ব্যবহার করি।
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"
অ্যাঙ্গুলারজেগুলি ব্যবহার করে (1.5 পর্যন্ত) আপনি তারিখ ফিল্টারটি ব্যবহার করতে পারেন :
var formattedDate = $filter('date')(myDate, 'yyyyMMdd')
সরলতা এবং পাঠযোগ্যতার জন্য অন্যটির জবাব দেওয়া।
এছাড়াও, বিদ্যমান পদ্ধতিগুলি নতুন পদ্ধতিতে সম্পাদনা করার জন্য উত্সাহ দেওয়া হয় না:
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);
কীভাবে ডে.জেএস ?
এটি কেবল 2KB, এবং আপনি এটিও করতে পারেন dayjs().format('YYYY-MM-DD')
।
আপনি যদি অতিরিক্ত (তবে ছোট) গ্রন্থাগারটি অন্তর্ভুক্ত না করেন তবে সুগার.জেএস জাভাস্ক্রিপ্টে তারিখগুলি নিয়ে কাজ করার জন্য প্রচুর সুন্দর কার্যকারিতা সরবরাহ করে। একটি তারিখ ফর্ম্যাট করতে, ফর্ম্যাট ফাংশনটি ব্যবহার করুন :
new Date().format("{yyyy}{MM}{dd}")
yyyymmdd=x=>(f=x=>(x<10&&'0')+x,x.getFullYear()+f(x.getMonth()+1)+f(x.getDate()));
alert(yyyymmdd(new Date));
তারিখ শর্টকোড উদ্ধার!
const dateShortcode = require('date-shortcode')
dateShortcode.parse('{YYYYMMDD}', new Date())
//=> '20180304'
এখানে একটি আরও জেনেরিক দৃষ্টিভঙ্গি দেওয়া হয়েছে যা উভয় তারিখ এবং সময় উপাদানগুলিকে মঞ্জুরি দেয় এবং একইভাবে সংখ্যা বা স্ট্রিং হিসাবে বাছাইযোগ্য।
তারিখ আইএসও ফর্ম্যাটের সংখ্যার ক্রমের ভিত্তিতে স্থানীয় সময় অঞ্চলে রূপান্তর করুন এবং অ-সংখ্যাগুলি সরান। অর্থাৎ,
// 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"
নেটিভ জাভাস্ক্রিপ্ট:
new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');