Hur får jag månad och datum i JavaScript i tvåsiffrig form?
När vi anropar getMonth() och getDate() på date-objektet, får vi ensiffrigt nummer. Till exempel:
För january visas 1, men jag behöver visa det som 01. Hur gör man det?
Svar #1
("0" + this.getDate()).slice(-2)
för datumet, och liknande:
("0" + (this.getMonth() + 1)).slice(-2)
för månaden.
Svar #2
Varför inte använda padStart?
padStart(targetLength, padString) där
targetLengthär2padStringär0
// Source: https://stackoverflow.com/a/50769505/2965993
var dt = new Date();
year = dt.getFullYear();
month = (dt.getMonth() + 1).toString().padStart(2, "0");
day = dt.getDate().toString().padStart(2, "0");
console.log(year + '/' + month + '/' + day);Detta kommer alltid att returnera tvåsiffriga nummer även om månaden eller dagen är mindre än 10.
Anteckningar:
- Detta kommer bara att fungera med Internet Explorer om js-koden transpileras med Babel.
getFullYear()returnerar det fyrsiffriga året och kräver intepadStart.getMonth()returnerar månaden från 0 till 11.- 1 läggs till månaden innan utfyllnad för att hålla den mellan 1 och 12.
getDate() returnerar dagen från 1 till 31.
- Den sjunde dagen kommer att returnera
07och därför behöver vi inte lägga till 1 innan vi fyller strängen.
Svar #3
Om du vill ha ett format som "YYYY-MM-DDTHH:mm:ss", då kan detta vara snabbare:
var date = new Date().toISOString().substr(0, 19);
// toISOString() will give you YYYY-MM-DDTHH:mm:ss.sssZ
Eller det vanligt använda MySQL-datumtidsformatet "YYYY-MM-DD HH:mm:ss":
var date2 = new Date().toISOString().substr(0, 19).replace('T', ' ');
Svar #4
Exempel för månad:
function getMonth(date) {
var month = date.getMonth() + 1;
return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}
Du kan också utöka Date-objektet med en sådan funktion:
Date.prototype.getMonthFormatted = function() {
var month = this.getMonth() + 1;
return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}
Svar #5
Det bästa sättet att göra detta är att skapa din egen enkla formatterare (som nedan):
getDate() returnerar dagen i månaden (från 1-31)
getMonth() returnerar månaden (från 0-11) < nollbaserad, 0=januari, 11=december
getFullYear() returnerar året (fyra siffror) < använd inte getYear()
function formatDateToString(date){
// 01, 02, 03, ... 29, 30, 31
var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
// 01, 02, 03, ... 10, 11, 12
var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
// 1970, 1971, ... 2015, 2016, ...
var yyyy = date.getFullYear();
// create the format you want
return (dd + "-" + MM + "-" + yyyy);
}
Svar #6
Jag skulle göra detta:
var date = new Date(2000, 0, 9);
var str = new Intl.DateTimeFormat('en-US', {
month: '2-digit',
day: '2-digit',
year: 'numeric'
}).format(date);
console.log(str); // prints "01/09/2000"Svar #7
Följande används för att konvertera db2-datumformat, dvs YYYY-MM-DD, med hjälp av ternär operator
var currentDate = new Date();
var twoDigitMonth=((currentDate.getMonth()+1)>=10)? (currentDate.getMonth()+1) : '0' + (currentDate.getMonth()+1);
var twoDigitDate=((currentDate.getDate())>=10)? (currentDate.getDate()) : '0' + (currentDate.getDate());
var createdDateTo = currentDate.getFullYear() + "-" + twoDigitMonth + "-" + twoDigitDate;
alert(createdDateTo);
