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

时间:2012-01-07 16:22:01

标签: javascript jquery date

我在这个合作伙伴“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 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时间戳,然后我获得当天,然后将该日期作为星期日或星期一等返回。但这里只有周五返回不正确。当我更改日期时,它应该在数组中返回同一天。

6 个答案:

答案 0 :(得分:5)

Date ObjecttoString方法,以您描述的格式输出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插件,如post中所述。


Link to MDN documentation

答案 1 :(得分:2)

最好使用合适的库,而不是使用内置的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,当然你应该对这种情况进行一些计划的错误处理。

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

答案 2 :(得分:1)

关于新的更新代码:

$(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/

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

答案 3 :(得分:1)

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()];

check

答案 4 :(得分:0)

您所说的“格式”是否是常规字符串?

然后你可以这样做

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

答案 5 :(得分:0)

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

<script src="sugar.min.js"></script>
...
var test = Date.create(d);
console.log(test.format("{Weekday}"));

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

Sugar.js缩小了17.9K并进行了压缩(包括它添加的所有其他功能,而不仅仅是日期内容);这大约是Moment.js的两倍,我正在考虑的替代方案。但是Moment.js不具有{dow}{weekday}格式的等价物。