jquery中的日期格式? dd-mm-yy到dd-M-Y

时间:2014-11-28 17:55:05

标签: jquery date datepicker

我正在尝试为我的项目写下一个泛型函数,它返回类似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 postthis精彩文章参考答案进行一些挖掘。致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

优势: 如果我们试图做一些通用的并且在许多地方使用的话,那么最合适

对此的任何建议都非常感谢

1 个答案:

答案 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/