मैं प्रारूप date object
में एक स्ट्रिंग में बदलने के लिए JS का उपयोग करने की कोशिश कर रहा हूं YYYYMMDD
। वहाँ श्रृंखलाबद्ध से एक आसान तरीका है Date.getYear()
, Date.getMonth()
और Date.getDay()
?
मैं प्रारूप date object
में एक स्ट्रिंग में बदलने के लिए JS का उपयोग करने की कोशिश कर रहा हूं YYYYMMDD
। वहाँ श्रृंखलाबद्ध से एक आसान तरीका है 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');
ऊ के उत्तर के अलावा, मैं तर्क संचालन को वापसी से अलग करने की सिफारिश करना चाहूंगा और उन्हें चर में टर्नरी के रूप में डालूंगा।
इसके अलावा, 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 () फ़ंक्शन के लिए कम कॉल हैं। यदि थोड़ा तेज नहीं है, तो यह कम से कम अधिक पठनीय है।
मुझे देशी वस्तुओं को संशोधित करना पसंद नहीं है, और मुझे लगता है कि स्वीकृत समाधान को स्ट्रिंग करने की तुलना में गुणा अधिक स्पष्ट है।
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('-', '')
ओपी के सवाल का जवाब देने के लिए एक पर करना होगा), जबकि आप ओपी के मूल प्रश्न के लिए सही थे और इसके लिए उस अतिरिक्त कदम की आवश्यकता नहीं होगी। अति उत्कृष्ट!
UTC में Date.toISOString () मुद्रण के कारण संभावित जेएस (ES5) समाधान बिना किसी संभावित तारीख के जंप मुद्दों के बिना:
var now = new Date();
var todayUTC = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));
return todayUTC.toISOString().slice(0, 10).replace(/-/g, '');
यह @Pierre Guilbert के जवाब पर @ weberste की टिप्पणी के जवाब में है।
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-format ने format()
जावास्क्रिप्ट की Date
वस्तु के लिए एक फ़ंक्शन लिखा , इसलिए इसे परिचित शाब्दिक स्वरूपों के साथ उपयोग किया जा सकता है।
अगर आपको अपने ऐप के जावास्क्रिप्ट में फुल फीचर्ड डेट फॉर्मेटिंग की जरूरत है, तो इसका इस्तेमाल करें। अन्यथा यदि आप जो करना चाहते हैं वह एक बंद है, तो गेटएयर (), गेटमार्ट (), गेटडाय () प्राप्त करना संभवत: सबसे आसान है।
@ 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/Types/Date
मुझे यकीन नहीं है अगर यह सिर्फ इस विशेष कार्य के लिए शामिल करने लायक है।
जब मुझे ऐसा करने की आवश्यकता होती है, तो मैं आमतौर पर नीचे दिए गए कोड का उपयोग करता हूं।
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" को दिन या महीने में जोड़ सकते हैं, और अंतिम दो के लिए पूछ सकते हैं क्योंकि हम हमेशा वही दो हैं जो हम चाहते हैं।
तो अगर MyDate.getMonth () 9 वापस आता है, तो यह होगा:
("0" + "9") // Giving us "09"
इस तरह से .slice (-2) को जोड़ने पर हमें अंतिम दो अक्षर मिलते हैं:
("0" + "9").slice(-2)
"09"
लेकिन अगर date.getMonth () 10 देता है, तो यह होगा:
("0" + "10") // Giving us "010"
इसलिए जोड़ना .llice (-2) हमें अंतिम दो अक्षर देता है, या:
("0" + "10").slice(-2)
"10"
यदि AngularJs (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);
Day.js के बारे में कैसे ?
यह केवल 2KB है, और आप भी कर सकते हैं dayjs().format('YYYY-MM-DD')
।
यदि आपको एक अतिरिक्त (लेकिन छोटी) लाइब्रेरी सहित कोई आपत्ति नहीं है, तो Sugar.js जावास्क्रिप्ट में तारीखों के साथ काम करने के लिए बहुत अच्छी कार्यक्षमता प्रदान करता है । किसी दिनांक को प्रारूपित करने के लिए, प्रारूप फ़ंक्शन का उपयोग करें :
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,'');