如何在日期格式中添加st、nd、rd和th,例如11月19日或12月2日等。
目前,我有以下代码
$( "#datepicker" ).datepicker({
altField: "#alternate",
altFormat: "DD, MM d ",
minDate: +0
});
如何在日期格式中添加st、nd、rd和th,例如11月19日或12月2日等。
目前,我有以下代码
$( "#datepicker" ).datepicker({
altField: "#alternate",
altFormat: "DD, MM d ",
minDate: +0
});
由于formatDate()没有该选项。
编辑: 是的,你说得对,抱歉我的回答没能帮到你,我是 SO 的新手。 这次我希望可以帮到你 :)
在datepicker初始化中添加一个onSelect函数,类似于这样:
$("#datepicker").datepicker({
altField: "#alternate",
altFormat: "DD, MM d",
minDate: +0,
onSelect: function(dateText, inst) {
var suffix = "";
switch(inst.selectedDay) {
case '1': case '21': case '31': suffix = 'st'; break;
case '2': case '22': suffix = 'nd'; break;
case '3': case '23': suffix = 'rd'; break;
default: suffix = 'th';
}
$("#alternate").val($("#alternate").val() + suffix);
}
});
每次选择日期时,它都会将后缀添加到备用字段中。
21
和 31
应用 'st',为 22
应用 'nd',为 23
应用 'rd'。由于 JavaScript 在 case 语句上一直掉落,直到它看到一个 break
,所以你可以在 case '1':
和 suffix
之间添加 case '21': case '31':
(对于其他数字也是如此)。 - stevendesu // Get the ordinal suffix for the given int value
var ordinalSuffix = function (val) {
var mod = val % 10;
if (mod === 1 && val !== 11) {
return 'st';
} else if (mod === 2 && val !== 12) {
return 'nd';
} else if (mod === 3 && val !== 13) {
return 'rd';
} else {
return 'th';
}
};
这个有帮助吗?
do = day + ((20 - day >= 0) ? "th" : ["st","nd","rd"][(day % 10) - 1] || "th");
console.log(do);
我知道这是一个老问题,但我想发布我的解决方案,以防有人遇到同样的问题并找到了这篇文章。这种方法在打开日历等操作时不会破坏所选日期。它使用格式d{后缀} M yy,即“30th Sep 2013”
$.datepicker.origParseDate = $.datepicker.parseDate;
$.datepicker.parseDate = function(format, value, settings) {
if ( $.isPlainObject(format) && format.hasOwnProperty('parse') && $.isFunction(format.parse) ) {
return format.parse.call(this, value, settings, $.datepicker.origParseDate);
} else {
$.datepicker.origParseDate(format, value, settings);
}
};
$.datepicker.origFormatDate = $.datepicker.formatDate;
$.datepicker.formatDate = function(format, date, settings) {
if ( $.isPlainObject(format) && format.hasOwnProperty('format') && $.isFunction(format.format) ) {
return format.format.call(this, date, settings, $.datepicker.origFormatDate);
} else {
$.datepicker.origFormatDate(format, date, settings);
}
};
$('.datepicker').datepicker({
dateFormat: {
parse: function(value, settings, originalParseDate) {
value = value.replace(/[a-z][^\s]+/, '');
return originalParseDate.call(this, 'd M yy', value, settings);
},
format: function(date, settings, originalFormatDate) {
date = originalFormatDate.call(this, 'd M yy', date, settings).split(' ');
date[0] += (function(n) {
n = (+n % 100).toString().split('');
if (n.length > 1 && n.shift() === '1' || +n[0] > 3) {
return 'th';
} else {
return ['th', 'st', 'nd', 'rd'][+n[0]];
}
})(date[0]);
return date.join(' ');
}
}
});
dateFormat 不使用 "s" 作为格式类型,所以在选项中通常会添加 -
dateFormat : "DD ds MM, yy",
onSelect: function(dateText, inst) {
var arrOrd = new Array('0','st','nd','rd','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','st','nd','rd','th','th','th','th','th','th','th','st');
var day = Number(inst.selectedDay);
var suffix = arrOrd[day];
$(this).val($(this).val().replace(inst.selectedDay+"s",inst.selectedDay+suffix));
}
formatDate()
,查看文档,它似乎不支持该特定格式。 - Clive