使用jquery / javascript从日期获取日期

我在这个合作伙伴“YYYY / MM / DD”中约会。 现在我想从这种格式中获取一天。 如何使用javascript或jquery获取它? 一种方法是这样

$(document).ready(function() { var d = new Date(); alert(d.getDay()); } ); 

但问题是d变量包含这种格式的日期

 Sat Jan 07 2012 18:16:57 GMT+0200 (FLE Standard Time) 

我如何以上述格式获取日期?


这是我的function的样子

 function dayOfWeek(d) { var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Sunday'); var currentDate = Math.round(+new Date(d)/1000); var nData = new Date(currentDate); //alert(nData); //alert(nData.getDay()); //var day = d.split("-")[2]; //var t = day.replace("0",""); //alert(t); return dayNames[nData.getDay()]; } 

我正在做的是我以“YYYY-MM-DD”格式传递日期,它将该日期转换为unix时间戳,然后我得到那天,然后将这一天作为星期日或星期一等返回。但这里它只返回星期五是不正确的。 当我更改日期时,它应该在数组中返回同一天。

Date Object有一个toString方法,它以您描述的格式输出UTC日期字符串。 但是, Date Object还有许多其他方法。

要获取当月(1-31),请使用getDate方法:

 d = new Date( ).getDate( ) ; 

您的日期字符串具有Date字符串构造函数无法识别的格式。 测试此行的返回值:

 var nData = new Date(currentDate) ; 

它将返回:

 "invalid Date" 

如果你的日期格式( d )是这个,

 "dd-mm-yyyy" 

做这个,

 var a = d.split("-") ; var date = new Date( a[2], (a[1] - 1), a[0] ) ; 

这应该会为您提供一个工作Date Object 。 或者使用jQuery的datepicker插件,如本文所述。


链接到MDN文档

而不是使用内置的Date来转换依赖于实现的转换,而不是自己编写逻辑,最好使用合适的库。 以下是使用Globalize.js执行此操作的一种简单方法:

 function dayOfWeek(s) { var d = Globalize.parseDate(s, 'yyyy/M/d'); if(d == null) { return null; } else { return Globalize.format(d, 'dddd'); } } 

这将以YYYY / MM / DD格式解析输入(如果您的实际格式为YYYY-MM-DD,则进行明显修改),更确切地说,年份为4位数(yyyy)和月份(M)和日期( d)可以是1位或2位数(如果您希望强制执行2位数,​​请使用MM和dd)。 然后它写入日期,以便只写一周中的某一天,作为单词(dddd)。 如果输入不是指定的格式,则该函数返回null,当然您应该对此案例进行一些计划的error handling。

作为额外的奖励,代码将全球化就绪:如果您需要修改代码以生成另一种语言的名称,您只需添加一个函数调用来设置Globalize.js的语言环境(语言)。

关于新的更新代码:

 $(function() { $("a").click(function () { var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); var nData = new Date(); //alert(nData); //alert(nData.getDay()); //var day = d.split("-")[2]; //var t = day.replace("0",""); //alert(t); alert(dayNames[nData.getDay()]); }); }); 

上面的代码就是一个例子。 根据您的需要编辑http://jsfiddle.net/qgDHB/ 。

我删除了一些不需要的行。

 var d=new Date(); var weekday=new Array(7); weekday[0]="Sunday"; weekday[1]="Monday"; weekday[2]="Tuesday"; weekday[3]="Wednesday"; weekday[4]="Thursday"; weekday[5]="Friday"; weekday[6]="Saturday"; var n = weekday[d.getDay()]; 

校验

您正在谈论常规字符串的“格式”吗?

然后你就可以做到这一点

 var theDay = theDate.split("/")[2]; 

受上面的Globalize答案的启发,以下是如何在Sugar.js库中执行此操作 :

  ... var test = Date.create(d); console.log(test.format("{Weekday}")); 

d可以是不同格式的加载(包括字符串或secs-since-1970或JS Date对象),输出格式选择同样全面。

Sugar.js是17.9K缩小和gzip(包括它添加的所有其他function,而不仅仅是日期的东西); 这大约是Moment.js的两倍,我正在考虑的替代方案。 但是Moment.js不具有{dow}{weekday}格式的等价物。