我在这个合作伙伴“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时间戳,然后我获得当天,然后将该日期作为星期日或星期一等返回。但这里只有周五返回不正确。当我更改日期时,它应该在数组中返回同一天。
答案 0 :(得分:5)
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插件,如post中所述。
答案 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()];
答案 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}
格式的等价物。