Когда мы вызываем getMonth()
и getDate()
на объект date
, мы получим single digit number
.
Например:
В january
отображается 1
, но мне нужно отобразить его как 01
. Как это сделать?
Когда мы вызываем getMonth()
и getDate()
на объект date
, мы получим single digit number
.
Например:
В january
отображается 1
, но мне нужно отобразить его как 01
. Как это сделать?
("0" + this.getDate()).slice(-2)
для даты и т.п.:
("0" + (this.getMonth() + 1)).slice(-2)
за месяц.
Если вам нужен формат "YYYY-MM-DDTHH: mm: ss", это может быть быстрее:
var date = new Date().toISOString().substr(0, 19);
// toISOString() will give you YYYY-MM-DDTHH:mm:ss.sssZ
Или часто используемый формат даты и времени MySQL "YYYY-MM-DD HH: mm: ss":
var date2 = new Date().toISOString().substr(0, 19).replace('T', ' ');
Я надеюсь, что это поможет
Пример за месяц:
function getMonth(date) {
var month = date.getMonth() + 1;
return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}
Вы также можете расширить объект Date
с помощью такой функции:
Date.prototype.getMonthFormatted = function() {
var month = this.getMonth() + 1;
return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}
Лучший способ сделать это - создать свой собственный простой форматтер (как показано ниже):
getDate()
возвращает день месяца (от 1-31) getMonth()
возвращает месяц (от 0-11) < с нулевым основанием, 0 = январь, 11 = декабрь getFullYear()
возвращает год (четыре цифры) не использовать 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);
}
Почему бы не использовать padStart
?
var dt = new Date();
m = (dt.getMonth() + 1).toString().padStart(2, "0");
d = dt.getDate().toString().padStart(2, "0");
console.log(m);
console.log(d);
Для преобразования формата даты db2 используется следующее: то есть YYYY-MM-DD с использованием тернарного оператора
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);
function monthFormated(date) {
//If date is not passed, get current date
if(!date)
date = new Date();
month = date.getMonth();
// if month 2 digits (9+1 = 10) don't add 0 in front
return month < 9 ? "0" + (month+1) : month+1;
}
function monthFormated() {
var date = new Date(),
month = date.getMonth();
return month+1 < 10 ? ("0" + month) : month;
}
Еще один пример, почти один лайнер.
var date = new Date();
console.log( (date.getMonth() < 9 ? '0': '') + (date.getMonth()+1) );
Это было мое решение:
function leadingZero(value) {
if (value < 10) {
return "0" + value.toString();
}
return value.toString();
}
var targetDate = new Date();
targetDate.setDate(targetDate.getDate());
var dd = targetDate.getDate();
var mm = targetDate.getMonth() + 1;
var yyyy = targetDate.getFullYear();
var dateCurrent = leadingZero(mm) + "/" + leadingZero(dd) + "/" + yyyy;
Используя Moment.js, это можно сделать следующим образом:
moment(new Date(2017, 1, 1)).format('DD') // day
moment(new Date(2017, 1, 1)).format('MM') // month
Не ответ, но вот как я получаю формат даты, который требуется в переменной
function setDateZero(date){
return date < 10 ? '0' + date : date;
}
var curr_date = ev.date.getDate();
var curr_month = ev.date.getMonth() + 1;
var curr_year = ev.date.getFullYear();
var thisDate = curr_year+"-"+setDateZero(curr_month)+"-"+setDateZero(curr_date);
Надеюсь, это поможет!
Если бы это могло сэкономить время, я искал:
YYYYMMDD
на сегодня и ладили с:
const dateDocumentID = new Date()
.toISOString()
.substr(0, 10)
.replace(/-/g, '');
Совет от MDN:
function date_locale(thisDate, locale) {
if (locale == undefined)
locale = 'fr-FR';
// set your default country above (yes, I'm french !)
// then the default format is "dd/mm/YYY"
if (thisDate == undefined) {
var d = new Date();
} else {
var d = new Date(thisDate);
}
return d.toLocaleDateString(locale);
}
var thisDate = date_locale();
var dayN = thisDate.slice(0, 2);
var monthN = thisDate.slice(3, 5);
console.log(dayN);
console.log(monthN);
Я бы сделал это:
var d = new Date('January 13, 2000');
var s = d.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' });
console.log(s); // prints 01/13/2000
new Date().getMonth()
метод new Date().getMonth()
возвращает месяц в виде числа (0-11).
С помощью этой функции вы можете легко исправить номер месяца.
function monthFormatted() {
var date = new Date(),
month = date.getMonth();
return month+1 < 10 ? ("0" + month) : month;
}
function GetDateAndTime(dt) {
var arr = new Array(dt.getDate(), dt.getMonth(), dt.getFullYear(),dt.getHours(),dt.getMinutes(),dt.getSeconds());
for(var i=0;i<arr.length;i++) {
if(arr[i].toString().length == 1) arr[i] = "0" + arr[i];
}
return arr[0] + "." + arr[1] + "." + arr[2] + " " + arr[3] + ":" + arr[4] + ":" + arr[5];
}
Ответы здесь были полезными, однако мне нужно больше, чем это: не только месяц, дата, месяц, часы и секунды для имени по умолчанию.
Интересно, что, несмотря на то, что для всех вышеперечисленных было необходимо добавить "0", "+ 1" понадобился только месяц, а не другие.
В качестве примера:
("0" + (d.getMonth() + 1)).slice(-2) // Note: +1 is needed
("0" + (d.getHours())).slice(-2) // Note: +1 is not needed
И еще одна версия здесь https://jsfiddle.net/ivos/zcLxo8oy/1/, надеюсь быть полезной.
var dt = new Date(2016,5,1); // just for the test
var separator = '.';
var strDate = (dt.getFullYear() + separator + (dt.getMonth() + 1) + separator + dt.getDate());
// end of setup
strDate = strDate.replace(/(\b\d{1}\b)/g, "0$1")
Мое решение:
function addLeadingChars(string, nrOfChars, leadingChar) {
string = string + '';
return Array(Math.max(0, (nrOfChars || 2) - string.length + 1)).join(leadingChar || '0') + string;
}
Использование:
var
date = new Date(),
month = addLeadingChars(date.getMonth() + 1),
day = addLeadingChars(date.getDate());
jsfiddle: http://jsfiddle.net/8xy4Q/1/
var net = require('net')
function zeroFill(i) {
return (i < 10 ? '0' : '') + i
}
function now () {
var d = new Date()
return d.getFullYear() + '-'
+ zeroFill(d.getMonth() + 1) + '-'
+ zeroFill(d.getDate()) + ' '
+ zeroFill(d.getHours()) + ':'
+ zeroFill(d.getMinutes())
}
var server = net.createServer(function (socket) {
socket.end(now() + '\n')
})
server.listen(Number(process.argv[2]))
если вы хотите, чтобы функция getDate() возвращала дату как 01 вместо 1, вот код для нее.... Предположим, что сегодня дата - 01-11-2018
var today = new Date();
today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + today.getDate();
console.log(today); //Output: 2018-11-1
today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + ((today.getDate() < 10 ? '0' : '') + today.getDate());
console.log(today); //Output: 2018-11-01
Я хотел сделать что-то вроде этого, и это то, что я сделал
PS Я знаю, что есть правильный ответ сверху, но просто хотел добавить что-то свое
const todayIs = async () =>{
const now = new Date();
var today = now.getFullYear()+'-';
if(now.getMonth() < 10)
today += '0'+now.getMonth()+'-';
else
today += now.getMonth()+'-';
if(now.getDay() < 10)
today += '0'+now.getDay();
else
today += now.getDay();
return today;
}
Если вы проверите меньше 10, вам не нужно создавать новую функцию для этого. Просто назначьте переменную в скобках и верните ее с помощью троичного оператора.
(m = new Date().getMonth() + 1) < 10 ? '0${m}' : '${m}'
currentDate(){
var today = new Date();
var dateTime = today.getFullYear()+'-'+
((today.getMonth()+1)<10?("0"+(today.getMonth()+1)):(today.getMonth()+1))+'-'+
(today.getDate()<10?("0"+today.getDate()):today.getDate())+'T'+
(today.getHours()<10?("0"+today.getHours()):today.getHours())+ ":" +
(today.getMinutes()<10?("0"+today.getMinutes()):today.getMinutes())+ ":" +
(today.getSeconds()<10?("0"+today.getSeconds()):today.getSeconds());
return dateTime;
},