1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Fixed #32062 -- Added %b support to Date.strftime.

This enables the admin to display the month as locale's abbreviated
name if %b is used in the date format.
This commit is contained in:
Gagan Deep 2020-10-25 07:32:57 +05:30 committed by Mariusz Felisiak
parent 0ee3cbd988
commit 982e860b73
3 changed files with 27 additions and 0 deletions

View File

@ -21,6 +21,20 @@ depends on core.js for utility functions like removeChildren or quickElement
gettext('November'), gettext('November'),
gettext('December') gettext('December')
], ],
monthsOfYearAbbrev: [
pgettext('abbrev. month January', 'Jan'),
pgettext('abbrev. month February', 'Feb'),
pgettext('abbrev. month March', 'Mar'),
pgettext('abbrev. month April', 'Apr'),
pgettext('abbrev. month May', 'May'),
pgettext('abbrev. month June', 'Jun'),
pgettext('abbrev. month July', 'Jul'),
pgettext('abbrev. month August', 'Aug'),
pgettext('abbrev. month September', 'Sep'),
pgettext('abbrev. month October', 'Oct'),
pgettext('abbrev. month November', 'Nov'),
pgettext('abbrev. month December', 'Dec')
],
daysOfWeek: [ daysOfWeek: [
pgettext('one letter Sunday', 'S'), pgettext('one letter Sunday', 'S'),
pgettext('one letter Monday', 'M'), pgettext('one letter Monday', 'M'),

View File

@ -85,6 +85,12 @@ function findPosY(obj) {
return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
}; };
Date.prototype.getAbbrevMonthName = function() {
return typeof window.CalendarNamespace === "undefined"
? this.getTwoDigitMonth()
: window.CalendarNamespace.monthsOfYearAbbrev[this.getMonth()];
};
Date.prototype.getFullMonthName = function() { Date.prototype.getFullMonthName = function() {
return typeof window.CalendarNamespace === "undefined" return typeof window.CalendarNamespace === "undefined"
? this.getTwoDigitMonth() ? this.getTwoDigitMonth()
@ -93,6 +99,7 @@ function findPosY(obj) {
Date.prototype.strftime = function(format) { Date.prototype.strftime = function(format) {
const fields = { const fields = {
b: this.getAbbrevMonthName(),
B: this.getFullMonthName(), B: this.getFullMonthName(),
c: this.toString(), c: this.toString(),
d: this.getTwoDigitDate(), d: this.getTwoDigitDate(),

View File

@ -40,6 +40,11 @@ QUnit.test('Date.getTwoDigitSecond', function(assert) {
assert.equal(new Date(2014, 6, 1, 0, 0, 20).getTwoDigitSecond(), '20', '12:00:20 am is 20'); assert.equal(new Date(2014, 6, 1, 0, 0, 20).getTwoDigitSecond(), '20', '12:00:20 am is 20');
}); });
QUnit.test('Date.getAbbrevMonthName', function(assert) {
assert.equal(new Date(2020, 0, 26).getAbbrevMonthName(), 'Jan', 'jan 26');
assert.equal(new Date(2020, 9, 26).getAbbrevMonthName(), 'Oct', 'oct 26');
});
QUnit.test('Date.getFullMonthName', function(assert) { QUnit.test('Date.getFullMonthName', function(assert) {
assert.equal(new Date(2020, 0, 26).getFullMonthName(), 'January', 'jan 26'); assert.equal(new Date(2020, 0, 26).getFullMonthName(), 'January', 'jan 26');
assert.equal(new Date(2020, 9, 26).getFullMonthName(), 'October', 'oct 26'); assert.equal(new Date(2020, 9, 26).getFullMonthName(), 'October', 'oct 26');
@ -49,6 +54,7 @@ QUnit.test('Date.strftime', function(assert) {
const date = new Date(2014, 6, 1, 11, 0, 5); const date = new Date(2014, 6, 1, 11, 0, 5);
assert.equal(date.strftime('%Y-%m-%d %H:%M:%S'), '2014-07-01 11:00:05'); assert.equal(date.strftime('%Y-%m-%d %H:%M:%S'), '2014-07-01 11:00:05');
assert.equal(date.strftime('%B %d, %Y'), 'July 01, 2014'); assert.equal(date.strftime('%B %d, %Y'), 'July 01, 2014');
assert.equal(date.strftime('%b %d, %Y'), 'Jul 01, 2014');
}); });
QUnit.test('String.strptime', function(assert) { QUnit.test('String.strptime', function(assert) {