Как мне отформатировать дату Javascript?
Как мне отформатировать эту дату, чтобы предупреждение отображало дату в формате MM/dd/yyyy?
<script type="text/javascript">
var date = new Date();
alert(date);
</script>
Ответы
Ответ 1
Вы прототипируете метод, чтобы вам никогда не приходилось повторять эту раздражающую задачу:
Date.prototype.toFormattedString = function (f)
{
var nm = this.getMonthName();
var nd = this.getDayName();
f = f.replace(/yyyy/g, this.getFullYear());
f = f.replace(/yy/g, String(this.getFullYear()).substr(2,2));
f = f.replace(/MMM/g, nm.substr(0,3).toUpperCase());
f = f.replace(/Mmm/g, nm.substr(0,3));
f = f.replace(/MM\*/g, nm.toUpperCase());
f = f.replace(/Mm\*/g, nm);
f = f.replace(/mm/g, String(this.getMonth()+1).padLeft('0',2));
f = f.replace(/DDD/g, nd.substr(0,3).toUpperCase());
f = f.replace(/Ddd/g, nd.substr(0,3));
f = f.replace(/DD\*/g, nd.toUpperCase());
f = f.replace(/Dd\*/g, nd);
f = f.replace(/dd/g, String(this.getDate()).padLeft('0',2));
f = f.replace(/d\*/g, this.getDate());
return f;
};
(и да, вы можете связать эти замены, но это не для читаемости, прежде чем кто-либо спросит)
В соответствии с запросом, дополнительные прототипы для поддержки вышеуказанного фрагмента.
Date.prototype.getMonthName = function ()
{
return this.toLocaleString().replace(/[^a-z]/gi,'');
};
//n.b. this is sooo not i18n safe :)
Date.prototype.getDayName = function ()
{
switch(this.getDay())
{
case 0: return 'Sunday';
case 1: return 'Monday';
case 2: return 'Tuesday';
case 3: return 'Wednesday';
case 4: return 'Thursday';
case 5: return 'Friday';
case 6: return 'Saturday';
}
};
String.prototype.padLeft = function (value, size)
{
var x = this;
while (x.length < size) {x = value + x;}
return x;
};
и пример использования:
alert((new Date()).toFormattedString('dd Mmm, yyyy'));
Ответ 2
Вы должны получить на нем старую школу:
Date.prototype.toMMddyyyy = function() {
var padNumber = function(number) {
number = number.toString();
if (number.length === 1) {
return "0" + number;
}
return number;
};
return padNumber(date.getMonth() + 1) + "/"
+ padNumber(date.getDate()) + "/" + date.getFullYear();
};
Ответ 3
добавить Jquery Ui плагин на вашу страницу
alert($.datepicker.formatDate('dd M yy', new Date()));
Ответ 4
С помощью соответствующей библиотеки вы можете интернационализировать свое приложение для всего мира всего несколькими строками кода. По умолчанию он автоматически локализует дату для локали браузера, но вы также можете определить свои собственные шаблоны:
dojo.date.locale.format(
new Date(2007,2,23,6,6,6),
{datePattern: "yyyy-MM-dd", selector: "date"}
);
// yields: "2007-03-23"
От: Форматирование дат и времени с использованием пользовательских шаблонов
Ответ 5
YUI также поддерживает форматирование даты, которое было освещено в нескольких недавних сообщениях в блоге:
Ответ 6
Вы удаляете функцию .toFormattedString из микрософт отлично и теперь, к сожалению, пропустили библиотеку атласа:
Date.prototype.toFormattedString = function (format) {
var dtf = Sys.CultureInfo.DateTimeFormat;
if (!format)
format = "F";
if (format.length == 1) {
switch (format) {
case "d":
format = dtf.ShortDatePattern;
break;
case "D":
format = dtf.LongDatePattern;
break;
case "t":
format = dtf.ShortTimePattern;
break;
case "T":
format = dtf.LongTimePattern;
break;
case "F":
format = dtf.FullDateTimePattern;
break;
case "M": case "m":
format = dtf.MonthDayPattern;
break;
case "s":
format = dtf.SortableDateTimePattern;
break;
case "Y": case "y":
format = dtf.YearMonthPattern;
break;
default:
throw Error.createError("'" + format + "' is not a valid date format");
}
}
var regex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;
var ret = "";
var hour;
function addLeadingZero(num) {
if (num < 10) {
return '0' + num;
}
return num.toString();
}
function addLeadingZeros(num) {
if (num < 10) {
return '00' + num;
}
if (num < 100) {
return '0' + num;
}
return num.toString();
}
for (; ; ) {
var index = regex.lastIndex;
var ar = regex.exec(format);
ret += format.slice(index, ar ? ar.index : format.length);
if (!ar) break;
switch (ar[0]) {
case "dddd":
ret += dtf.DayNames[this.getDay()];
break;
case "ddd":
ret += dtf.AbbreviatedDayNames[this.getDay()];
break;
case "dd":
ret += addLeadingZero(this.getDate());
break;
case "d":
ret += this.getDate();
break;
case "MMMM":
ret += dtf.MonthNames[this.getMonth()];
break;
case "MMM":
ret += dtf.AbbreviatedMonthNames[this.getMonth()];
break;
case "MM":
ret += addLeadingZero(this.getMonth() + 1);
break;
case "M":
ret += this.getMonth() + 1;
break;
case "yyyy":
ret += this.getFullYear();
break;
case "yy":
ret += addLeadingZero(this.getFullYear() % 100);
break;
case "y":
ret += this.getFullYear() % 100;
break;
case "hh":
hour = this.getHours() % 12;
if (hour == 0) hour = 12;
ret += addLeadingZero(hour);
break;
case "h":
hour = this.getHours() % 12;
if (hour == 0) hour = 12;
ret += hour;
break;
case "HH":
ret += addLeadingZero(this.getHours());
break;
case "H":
ret += this.getHours();
break;
case "mm":
ret += addLeadingZero(this.getMinutes());
break;
case "m":
ret += this.getMinutes();
break;
case "ss":
ret += addLeadingZero(this.getSeconds());
break;
case "s":
ret += this.getSeconds();
break;
case "tt":
ret += (this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator;
break;
case "t":
ret += ((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0);
break;
case "f":
ret += addLeadingZeros(this.getMilliseconds()).charAt(0);
break;
case "ff":
ret += addLeadingZeros(this.getMilliseconds()).substr(0, 2);
break;
case "fff":
ret += addLeadingZeros(this.getMilliseconds());
break;
case "z":
hour = this.getTimezoneOffset() / 60;
ret += ((hour >= 0) ? '+' : '-') + Math.floor(Math.abs(hour));
break;
case "zz":
hour = this.getTimezoneOffset() / 60;
ret += ((hour >= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour)));
break;
case "zzz":
hour = this.getTimezoneOffset() / 60;
ret += ((hour >= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) +
dtf.TimeSeparator + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60));
break;
default:
debug.assert(false);
}
}
return ret;
}
Ответ 7
Еще один вариант:
Библиотека DP_DateExtensions
Не сказать, что это лучше, чем другие варианты, но мне это нравится (конечно, я не полностью непредвзято).
Ответ 8
Попробуйте date.js, например:
<script type="text/javascript">
alert(new Date().toString('M/d/yyyy'));
</script>
Ответ 9
Вы могли бы попробовать:
date = new Date().toLocaleDateString().split("/")
date[0].length == 1 ? "0" + date[0] : date[0]
date[1].length == 1 ? "0" + date[1] : date[1]
date = date[0] + "/" + date[1] + "/" + date[2]
Ответ 10
Простым форматом будет:
var d = new Date() // Thu Jun 30 2016 12:50:43 GMT-0500 (Central Daylight Time (Mexico))
d.toJSON(); // "2016-06-30T17:50:43.084Z"
Ответ 11
2017 год ответ: используйте moment.js