var App = App || {};
App = {
getDataFromServer: function(){
var self = this,
deferred = $.Deferred(),
requests = [];
requests.push($.getJSON('request/ajax/url/1'));
requests.push($.getJSON('request/ajax/url/2'));
$.when.apply(jQuery, requests).done(function(xhrResponse) {
return deferred.resolve(xhrResponse.result);
});
return deferred;
},
init: function(){
this.getDataFromServer().done(_.bind(function(resp1, resp2) {
// Do the operations which you wanted to do when you
// get a response from Ajax, for example, log response.
}, this));
}
};
App.init();
Измененный фрагмент кода, который я часто использую:
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();
Если вы не возражаете, включая дополнительную (но небольшую) библиотеку, Sugar.js предоставляет множество приятных функций для работы с датами в JavaScript. Чтобы форматировать дату, используйте функцию format :
new Date().format("{yyyy}{MM}{dd}")
Этот код исправляет ответ Пьера Гильберта:
(он работает даже после 10000 лет)
YYYYMMDD=new Date().toISOString().slice(0,new Date().toISOString().indexOf("T")).replace(/-/g,"")
Вот небольшое улучшение ответа от https://stackoverflow.com/users/318563/oo
Date.prototype.ddmmyyyy = function(delimiter) {
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getDate().toString();
return (dd[1]?dd:"0"+dd[0]) + delimiter + (mm[1]?mm:"0"+mm[0]) + delimiter +yyyy ; // padding
};
Надеюсь быть полезным для всех!
:)
Это одна строка кода, которую вы можете использовать для создания строки YYYY-MM-DD
сегодняшней даты.
var d = new Date().toISOString().slice(0,10);
Немного упрощенная версия для наиболее популярного ответа в этом потоке 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;
}
Мне не нравится модифицировать собственные объекты, и я думаю, что умножение становится яснее, чем строка, заполняющая принятое решение.
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));
Try this:
Функция showdate () {
var a = new Date();
var b = a.getFullYear();
var c = a.getMonth();
(++c < 10)? c = "0" + c : c;
var d = a.getDate();
(d < 10)? d = "0" + d : d;
var final = b + "-" + c + "-" + d;
return final;
}
document.getElementById("todays_date").innerHTML = showdate();
yyyymmdd=x=>(f=x=>(x<10&&'0')+x,x.getFullYear()+f(x.getMonth()+1)+f(x.getDate()));
alert(yyyymmdd(new Date));
В дополнение к ответу o-o я хотел бы рекомендовать отделить логические операции от возврата и поместить их как тройники в переменные.
Кроме того, используйте 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 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();
var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min);
};
Date.prototype.yyyymmddhhmmss = 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();
var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
return "".concat(yyyy).concat(mm).concat(dd).concat(hh).concat(min).concat(ss);
};
var d = new Date();
d.yyyymmdd();
d.yyyymmddhhmm();
d.yyyymmddhhmmss();
Немного больше DRY скрипта, как предложено RiZKiT
Вы можете просто использовать этот код для получения даты в году
var date = new Date().getFullYear() + "-" + (parseInt(new Date().getMonth()) + 1) + "-" + new Date().getDate();
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'
var date = new Date();
var formattedDate = moment(date).format('YYYYMMDD');
short-код даты на помощь!
const dateShortcode = require('date-shortcode')
dateShortcode.parse('{YYYYMMDD}', new Date())
//=> '20180304'
// 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
Исходный Javascript:
new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');
Ответ на другой для Simplicity & amp; читаемость. Также не рекомендуется редактировать существующие предопределенные члены класса с помощью новых методов:
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);
Вы можете использовать функцию toISOString:
var today = new Date();
today.toISOString().substring(0, 10);
Это даст вам формат «yyyy-mm-dd».
dateformat - очень полезный пакет, и я нахожу его более надежным и простым в использовании, чем moment.js .
How для использования:
Загрузите и установите dateformat
из NPM. Требовать его в вашем модуле:
var dateFormat = require('dateformat');
, а затем просто форматировать ваши вещи:
var myYYYYmmddDate = dateformat(new Date(), 'yyyy-mm-dd');
Если вам не нужно чистое решение JS, вы можете использовать jQuery UI для выполнения задания следующим образом:
$.datepicker.formatDate('yymmdd', new Date());
Обычно мне не нравится импортировать слишком много библиотек. Но пользовательский интерфейс jQuery настолько полезен, что вы, вероятно, будете использовать его где-то еще в своем проекте.
Посетите http://api.jqueryui.com/datepicker/ для получения дополнительных примеров
Если вы используете AngularJs (до 1,5), вы можете использовать фильтр даты :
var formattedDate = $filter('date')(myDate, 'yyyyMMdd')
Этот парень здесь => http://blog.stevenlevithan.com/archives/date-time-format написал функцию format()
для объекта Date
Javascript, поэтому он может быть используется со знакомыми литералами.
Если вам нужно полнофункциональное форматирование даты в Javascript вашего приложения, используйте его. В противном случае, если вы хотите сделать одно, то конкатенация getYear (), getMonth (), getDay (), вероятно, проще всего.
этот пост помог мне написать этого помощника, поэтому я расскажу об этом, если кто-то ищет это решение, он поддерживает все варианты yyyy, mm, dd
Date.prototype.formattedDate = function (pattern) {
formattedDate = pattern.replace('yyyy', this.getFullYear().toString());
var mm = (this.getMonth() + 1).toString(); // getMonth() is zero-based
mm = mm.length > 1 ? mm : '0' + mm;
formattedDate = formattedDate.replace('mm', mm);
var dd = this.getDate().toString();
dd = dd.length > 1 ? dd : '0' + dd;
formattedDate = formattedDate.replace('dd', dd);
return formattedDate;
};
d = new Date();
pattern = 'yyyymmdd'; // 20150813
d.formattedDate(pattern);
pattern = 'yyyy-mm-dd';
d.formattedDate(pattern); // 2015-08-13
Выполняя ответ от @ o-o, вы вернете строку даты в соответствии с строкой формата. Вы можете легко добавить двузначное регшее года для года & amp; миллисекунды и т. д., если они вам понадобятся.
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);
Я не знаю, насколько эффективен этот эффект, особенно совершенный, потому что он использует много регулярных выражений. Возможно, он мог использовать некоторую работу, в которой я не владею чистыми js.
var someDate = new Date();
var dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);
Другим способом является использование toLocaleDateString
с языковой версией, которая имеет стандарт формата даты с большим числом сторон , такой как Швеция, Литва, Венгрия, Южная Корея. ..:
date.toLocaleDateString('se')
Чтобы удалить разделители (-
), это просто вопрос замены нецифровых символов:
console.log( new Date().toLocaleDateString('se').replace(/\D/g, '') );
У вас нет потенциальной ошибки, которую вы можете получить с форматами дат UTC: дата UTC может быть в один выходной день по сравнению с датой в локальном часовом поясе.