我正在尝试为我的项目写下一个泛型函数,它返回类似dd-M-y
的日期格式,即10-dec-14
。
通常我将输入传递给函数参数作为格式dd-mm-yy
的日期并尝试转换回我所需的格式。
Function Format(dateval) `04-12-2014`
{
//Trail 1 :
var newdate = new Date(dateval); `o/p: 12 April 2014` like that its getting converted which is way wrong
//Trail 2 :
var newdate = $.DatePicker('dd-M-Y',dateval); `o/p: 12-04-2014`
//Trail 3 : Splitting date and compare and build format manually
return newdate;
}
使用new Date
时遇到了很多经验,这种行为很奇怪,像13-20-2014
这样的事情jan 20th 2014
可以解释我的麻烦。
我正在寻找一个严肃的解决方案,以多种方式完成我的工作。
PS:我不是插件的忠实粉丝。请不要为我的问题挖掘那些。
{编辑:1}
可能的解决方案:通过Rob post和this精彩文章参考答案进行一些挖掘。致Clint Powell
求助。
(function() {
var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
function fetch(n) {
return n<10? '0'+n : ''+n;
}
function output(dat){
var d = new Date(dat.replace(/(\d+)([-\/\\\.])(\d+)/, "$3$2$1"));
return fetch(d.getDate())+'-'+months[d.getMonth()]+'-'+(d.getFullYear()+'').slice(-2);}
window.output=output; //exposes the output function outside
}());
功能小提琴Here
优势: 如果我们试图做一些通用的并且在许多地方使用的话,那么最合适
对此的任何建议都非常感谢
答案 0 :(得分:1)
这是一种快速而简单的方式来做你想做的事。它只是一种自定义方法。有时候采用简单的自制解决方案是最好的。 http://jsfiddle.net/jdkkruap/6/
function customDate(d, monthFirst) {
if(!(d instanceof Date)) {
!monthFirst ? d = new Date(d.replace(/(\d+)([-\/\\\.])(\d+)/, "$3$2$1")) : d = new Date(d);
}
var months = ["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"];
return (d.getDate() > 9 ? d.getDate() : "0"+d.getDate()) +'-'+months[d.getMonth()]+'-'+(d.getFullYear()+"").substr(2)
}
现在您可以按如下方式调用该方法:
customDate('10-12-2014'); //output will be 10-dec-14
customDate('10-12-2014', true); //output will be 12-oct-14
如果您真的需要灵活性,请考虑使用moment.js:http://momentjs.com/docs/#/displaying/