【问题标题】:Date formatting in jquery ? dd-mm-yy to dd-M-Yjquery中的日期格式? dd-mm-yy 到 dd-M-Y
【发布时间】:2014-11-28 17:55:04
【问题描述】:

我正在尝试为我的项目编写一个通用函数,它返回日期格式类似于 dd-M-y10-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

优势: 如果我们尝试做一些通用的东西并在很多地方使用,那么最合适

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

【问题讨论】:

  • 您反对仅手动进行转换吗?它不需要很多行代码。
  • 哦,伙计们,讽刺已经够普遍了,以至于投反对票。我很确定我很清楚我的问题。干杯。
  • 日期和时间可能很棘手。即使您提到您不需要插件,您也可以考虑添加一个日期库(如 [momentjs.com/](momentjs))并让它为您处理日期格式。这样您就可以避免考虑时区、夏令时和闰年等问题。
  • @ClintPowell 它会做到这一点,但在困难的情况下,正确的伴侣总是有可能发生代码破坏。你能告诉我你的方法吗?
  • @mrrogers 我一直在使用 jquery 的淘汰赛,但如果我使用这个 moment.js 这对我来说将是一个问题,因为我已经尝试了这个很棒的插件。用于显示竖起大拇指,但以其他方式失败

标签: jquery date datepicker


【解决方案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/

【讨论】:

  • 根据我的问题,我正在寻找 10-12-2014 到 '10-dec-2014' 。如果我没有错,我上面提到过不是吗?
  • 我现在明白你的意思了,给我一点时间(不是双关语)。您的问题是日期排在第一位,月份排在第二位(就像许多欧洲日期格式一样)。你所有的日期都是这样传递的吗?
  • 宾果游戏是的,伙计。我相信你现在得到了我
  • 很抱歉我在评论中错误地提到了它,即我需要年份为 14 而不是 2014 年
  • 我修复了使用 slice(-2) 的问题伙伴。谢谢队友
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多