Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给定日期(m/d/yyyy),确定其;“第三个星期二”;本月的月份等_Javascript_Jquery - Fatal编程技术网

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