Javascript 给定日期(m/d/yyyy),确定其;“第三个星期二”;本月的月份等
经过几次搜索,我都没能找到我要找的东西。我正在使用Javascript 给定日期(m/d/yyyy),确定其;“第三个星期二”;本月的月份等,javascript,jquery,Javascript,Jquery,经过几次搜索,我都没能找到我要找的东西。我正在使用jquery-datepicker返回一个日期字符串,看起来像Day、Month-date、YYYY,我正在寻找一个库或某种方法,可以将其转换为 本月的第二个星期二,或本月的第四个星期四。到目前为止,jquery的prettyDate和EasyDate似乎没有我想要的功能,我希望避免手工操作 谢谢, Alex如果momentjs对您不起作用(尽管我真的认为momentjs是一个更好的解决方案),这里有一个我当年使用的脚本 在中,您有一些有用的函数
jquery-datepicker
返回一个日期字符串,看起来像Day、Month-date、YYYY
,我正在寻找一个库或某种方法,可以将其转换为
本月的第二个星期二
,或本月的第四个星期四
。到目前为止,jquery的prettyDate
和EasyDate
似乎没有我想要的功能,我希望避免手工操作
谢谢,
Alex如果momentjs对您不起作用(尽管我真的认为momentjs是一个更好的解决方案),这里有一个我当年使用的脚本 在中,您有一些有用的函数,如
moveToFirstDayOfMonth
和getWeek
然后你可以得到一个月第一天的一周,然后减去这两天得到一个月的一周
下面是一个使用Date.js并从今天开始的简单示例,但您可以传递自己的日期。我不太熟悉其他日期库,但我认为您可以重新创建如下内容
function dayOfWeekToday(){
//Get the total weeks on the year from this day
var totalWeek = Date.today().getWeek();
//Get the first day of this month
var firstOfMonth = Date.today().moveToFirstDayOfMonth();
//Get the total weeks form the first day of the month
var weeksAtStartOfMonth = firstOfMonth.getWeek();
//Get the week of the month
var week = totalWeek - weeksAtStartOfMonth;
//Get the day(0-6) of today and the first day
var today = Date.today().getDay();
var firstDay = firstOfMonth.getDay();
//If today is before the firstDay then the week will be off by one
if(today < firstDay){
week--;
}
//Get the day form of the string
var day = Date.today().toString("dddd");
//Translate from a number to a string
var str = "first";
if(week === 1){
str = "second";
}else if(week === 2){
str = "third";
}else if(week === 3){
str = "fourth";
}else if (week === 4){
str = "fifth";
}
//Result
return "The "+str+" "+day+" of the month";
}
函数dayOfWeekToday(){
//从这一天开始获取一年中的总周数
var totalWeek=Date.today().getWeek();
//得到这个月的第一天
var firstOfMonth=Date.today().moveToFirstDayOfMonth();
//获取每月第一天的总周数
var weeksAtStartOfMonth=firstOfMonth.getWeek();
//得到每月的一周
var week=totalWeek-weeksAtStartOfMonth;
//获得今天的第(0-6)天和第一天
var today=Date.today().getDay();
var firstDay=firstOfMonth.getDay();
//如果今天在第一天之前,那么本周将休息一天
如果(今天<第一天){
周--;
}
//获取字符串的日形式
var day=Date.today().toString(“dddd”);
//将数字转换为字符串
var str=“第一”;
如果(周===1){
str=“第二”;
}否则如果(周===2){
str=“第三”;
}否则如果(周===3){
str=“第四”;
}否则,如果(周===4){
str=“第五”;
}
//结果
返回“当月的”+str+“”+day+”;
}
我写了一些简单的逻辑,从日期的值向后运行:
function calculateNthDate(startDateDay, startDateValue){
var day = startDateDay;
var date = startDateValue;
var i = 0;
while(date >= 0){
if (date > 0 ){
i++;
}
date = date - 7;
}
var string = "The "+i+'th '+day+" of the month.";
}
编辑:必须为
nd
、st
和rd
定制th
,th
,您不需要日期库,只需将日期除以7,然后四舍五入即可
//format: Day, Month Date, YYYY
var ordinals = ["", "first", "second", "third", "fourth", "fifth"];
var date = "Friday, May 10, 2013";
var tokens = date.split(/[ ,]/);
// tokens = ["Friday", "", "May", "10", "", "2013"];
console.log( "The " + ordinals[Math.ceil(tokens[3]/7)] + " " + tokens[0] + " of the month");
第n天(新日期(2013年4月10日))
/*返回值:
五月的第二个星期五
*/我只将其用于基本用途,因此我不确定它是否能满足您的所有需求,但您可以查看:它似乎没有“每月第n个周一/周二/等”的功能。请看这个问题:这些答案比它重复的问题更好。这失败了。那是九月的第一个星期一。使用ceil并将第一个数组成员留空->
//format: Day, Month Date, YYYY
var ordinals = ["", "first", "second", "third", "fourth", "fifth"];
var date = "Friday, May 10, 2013";
var tokens = date.split(/[ ,]/);
// tokens = ["Friday", "", "May", "10", "", "2013"];
console.log( "The " + ordinals[Math.ceil(tokens[3]/7)] + " " + tokens[0] + " of the month");
function nthDay(D){
var nth= ['First', 'Second', 'Third', 'Fourth', 'Fifth'],
dayNames= ['Sunday', 'Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday', 'Saturday'],
monthNames= ['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'];
return nth[Math.floor(D.getDate()/7)]+' '+
dayNames[D.getDay()]+' of '+monthNames[D.getMonth()];
}