【发布时间】:2014-11-28 17:55:04
【问题描述】:
我正在尝试为我的项目编写一个通用函数,它返回日期格式类似于 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
优势: 如果我们尝试做一些通用的东西并在很多地方使用,那么最合适
对此的任何建议都非常感谢
【问题讨论】:
-
您反对仅手动进行转换吗?它不需要很多行代码。
-
哦,伙计们,讽刺已经够普遍了,以至于投反对票。我很确定我很清楚我的问题。干杯。
-
日期和时间可能很棘手。即使您提到您不需要插件,您也可以考虑添加一个日期库(如 [momentjs.com/](momentjs))并让它为您处理日期格式。这样您就可以避免考虑时区、夏令时和闰年等问题。
-
@ClintPowell 它会做到这一点,但在困难的情况下,正确的伴侣总是有可能发生代码破坏。你能告诉我你的方法吗?
-
@mrrogers 我一直在使用 jquery 的淘汰赛,但如果我使用这个 moment.js 这对我来说将是一个问题,因为我已经尝试了这个很棒的插件。用于显示竖起大拇指,但以其他方式失败
标签: jquery date datepicker