Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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中一周中特定日期的日期_Javascript_Jquery_Datetime - Fatal编程技术网

获取JavaScript中一周中特定日期的日期

获取JavaScript中一周中特定日期的日期,javascript,jquery,datetime,Javascript,Jquery,Datetime,我想我主要是在放屁。我只想快速向前推一个日期()直到一周中的某一天,然后得到该日期的月份、日期和年份 例如,今天是09/03/10,但我想要一个函数(nextSession())返回09/08/10(下周三) 我该怎么做?我能想到的最好的办法是在setDate()中增加一天,直到getDay()==3,但这有点难看 另外,jQuery也很酷。使用 如果您只需要星期三,您应该能够执行以下操作: function next(today) { var offset = (today.getDa

我想我主要是在放屁。我只想快速向前推一个
日期()
直到一周中的某一天,然后得到该日期的月份、日期和年份

例如,今天是09/03/10,但我想要一个函数(
nextSession()
)返回09/08/10(下周三)

我该怎么做?我能想到的最好的办法是在
setDate()
中增加一天,直到
getDay()
==3,但这有点难看

另外,jQuery也很酷。

使用


如果您只需要星期三,您应该能够执行以下操作:

function next(today) {
    var offset = (today.getDay() < 3) ? 0 : 7;
    var daysUntilWednesday = 3 + offset - today.getDay();
    return new Date().setDate(today.getDate() + daysUntilWednesday);
}

var wed = next( new Date() );
功能下一步(今天){
var offset=(today.getDay()<3)?0:7;
var daysuntilsteday=3+offset-today.getDay();
返回新日期().setDate(今天.getDate()+daysuntil周三);
}
var wed=下一个(新日期());

编辑:

还是像这样

var-days=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
下一(天)的活动{
var today=新日期();
var today_day=today.getDay();
day=day.toLowerCase();
对于(变量i=7;i--;){
如果(天===天[i]){
日=(i)
这一个将设置日期为下周三。如果已经是周三,结果将是给定日期后一周

编辑:增加了不带参数调用函数的可能性:
nextSession()
-它返回从今天开始的下一个会话日期

js(不需要jQuery)是:

函数addDays(myDate,天){
返回新日期(myDate.getTime()+天*24*60*60*1000);
}
函数减去天数(myDate,天){
返回新日期(myDate.getTime()-days*24*60*60*1000);
}
函数dateOfNext(工作日编号){
var today=新日期();
var lastSunday=减去天数(今天,今天.getDay());
var daysToAdd=工作日数;

if(weekdayNumber这里有一个函数返回第二天的数字

function nextDay(dayNb){
 return function( date ){
   return new Date(date.getTime() + ((dayNb-date.getDay() +7) %7 +1) *86400000);
 };
}
要使用它,请设置所需的日数0:Mon-6:Sun

  var nextWed = nextDay(2);
  alert( nextWed( new Date() ));
我建议在处理日期时使用

var nextmonday = moment().day(8).format('YYYY-MM-DD'); // e.g. 2015-10-26
var nexttuesday = moment().day(9).format('YYYY-MM-DD'); // e.g. 2015-10-27
var nextwednesday = moment().day(10).format('YYYY-MM-DD'); // e.g. 2015-10-28
var nextthursday = moment().day(11).format('YYYY-MM-DD'); // e.g. 2015-10-29
您可以选择不同的格式,做更多更好的事情,请查看:

简单计算:

//对于下周日,设置0,对于周六6;周三==3;
var-needDay=3;
var fromDate=new Date();//或任何计算日期
fromDate.setDate(fromDate.getDate()+(7-fromDate.getDay())+needDay);

console.log(fromDate)
@Adam谢谢,看起来很完美,但我会等着看是否有人给我一个更轻的方法。25k+jQuery+jQuery用户界面+我的个人40kb JS文件对于这个应用程序来说相当重,哈哈,但是,这是一个非常酷的方法lib@Oscar-这和你想要做的一样轻。但是,你有没有检查Javascript的缩小?如果你不这样做,你肯定应该这样做。检查YUI compressor或Google Close。两者都将把Javascript压缩到更小的级别。@Oscar-事实上……DateJS不需要jQuery UI。而且,如果你使用jQuery UI,你已经有了jQuery的开销。DateJS真的增加了什么都没有。25kb什么都没有(特别是与单个图像的大小相比)。@Jason我知道我不需要用于DateJS的jQuery UI:)我有它用于日期选择器和其他东西。请看下面的答案。这比:只获取下周三的日期要轻得多。我担心的不是实际的文件大小,而是IE8中的处理时间(在Firefox 3.5中有点让我担心)谢谢,我可能会在它投入生产后对它进行压缩。谢谢!@Oscar-啊。我不知道你需要的是下周三。:-)我以为你需要的是更通用的东西。自然语言问题又来了!很高兴你得到了答案。将它修改为:function xnextSession(){var ret=new Date();ret.setDate(ret.getDate()+(3-1-ret.getDay()+7)%7+1);ret;}这仍然可以正常工作吗?我的意思是…似乎会…我看到您已经更改了
var ret=new Date();
它必须是
新日期(Date)
,因为setDate()将只设置月的哪一天,其他信息(如月或年)将消失。我声明变量ret的原因是因为我不想更改值
date
var ret=new date(date)
复制对象
日期
,而不是复制引用。编辑:很抱歉,它当然适用于当天,我没有看到所有内容^^该死,这是干净的。我唯一的建议是将您前进的日期设置为参数。+1我也不敢相信您实际使用了%(mod)接线员!当然,太完美了。无论如何,我决定把它绑定到星期三,因为函数名“nextSession”,我想它表示星期三。
function addDays(myDate,days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}

function subtractDays(myDate,days) {
    return new Date(myDate.getTime() - days*24*60*60*1000);
}

function dateOfNext(weekdayNumber) {
    var today = new Date();

    var lastSunday = subtractDays(today, today.getDay());

    var daysToAdd = weekdayNumber;
    if (weekdayNumber <= today.getDay()) {
        daysToAdd = daysToAdd + 7;
    }

    return addDays(lastSunday, daysToAdd);
}
function nextDay(dayNb){
 return function( date ){
   return new Date(date.getTime() + ((dayNb-date.getDay() +7) %7 +1) *86400000);
 };
}
  var nextWed = nextDay(2);
  alert( nextWed( new Date() ));
var nextmonday = moment().day(8).format('YYYY-MM-DD'); // e.g. 2015-10-26
var nexttuesday = moment().day(9).format('YYYY-MM-DD'); // e.g. 2015-10-27
var nextwednesday = moment().day(10).format('YYYY-MM-DD'); // e.g. 2015-10-28
var nextthursday = moment().day(11).format('YYYY-MM-DD'); // e.g. 2015-10-29