Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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/5/date/2.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 从日期减去3天_Javascript_Date_Datetime_Momentjs_Weekend - Fatal编程技术网

Javascript 从日期减去3天

Javascript 从日期减去3天,javascript,date,datetime,momentjs,weekend,Javascript,Date,Datetime,Momentjs,Weekend,我想通过从中减去3天来计算一个提醒日期。但是,如果结果日期 如果是周六或周日,则应给出周五的日期 如果是星期五,它应该给出星期四的日期 比如说 Exchange Date ReminderDate 18.06.2020 -3 days = 15.06.2020 --> OK, because Monday 17.06.2020 -3 days =

我想通过从中减去3天来计算一个
提醒日期。但是,如果结果日期

  • 如果是周六或周日,则应给出周五的日期
  • 如果是星期五,它应该给出星期四的日期
比如说

Exchange Date                             ReminderDate

18.06.2020                -3 days =       15.06.2020 --> OK, because Monday
17.06.2020                -3 days =       14.06.2020 --> Sunday, must be changed to 12.06.2020 
16.06.2020                -3 days =       13.06.2020 --> Saturday, must be changed to 12.06.2020 
15.06.2020                -3 days =       11.06.2020 --> Friday, must be changed to 11.06.2020
我尝试了类似的方法,但是
.getDay()
.day()
似乎都不起作用。而
dt
似乎给出了今天的日期,而不是
交换的日期

var exchange = NWF$("#" + varAustauschtermin).val(); // date like 18.06.2020
console.log("Exchange: " + exchange);
var reminderDate = moment(exchange, "DD.MM.YYYY").format("DD.MM.YYYY");
var dt = new Date(reminderDate);
// var reminderDate = moment(exchange, "DD.MM.YYYY").subtract(3, 'days').format("DD.MM.YYYY");

// console.log("reminderDate.day(): " + reminderDate.day()); 
// console.log("reminderDate.getDay(): " + reminderDate.getDay());

if(dt.getDay() == 6) { // Saturday
    console.log("Saturday");
    reminderDate = moment(exchange, "DD.MM.YYYY").subtract(1, 'days').format("DD.MM.YYYY");
} else if (dt.getDay() == 0) { // Sunday
    console.log("Sunday");
    reminderDate = moment(exchange, "DD.MM.YYYY").subtract(2, 'days').format("DD.MM.YYYY");
} else if (dt.getDay() == 5) { // Friday
    console.log("Friday");
    reminderDate = moment(exchange, "DD.MM.YYYY").subtract(1, 'days').format("DD.MM.YYYY");
} else {
    console.log("Weekday");
    reminderDate = moment(exchange, "DD.MM.YYYY").subtract(3, 'days').format("DD.MM.YYYY");
}
console.log("Reminder Date: " + reminderDate);

感谢您的帮助

如果您使用的是momentjs,则无需切换到本机日期对象,因为使用momentjs可以做的一切都非常简单

使用momentjs帮助您获取一周中某一天的原始数据

0-星期日 1-星期一 ... .. . 6-星期六

若要查找本周的日期,请执行以下操作:
moment().day(“星期六”)
。 然后,您已经在使用它按给定的日期倒带日期

基于以上想法,您可以尝试此帮助器功能


函数dateShift(d){
//日期编号为0(星期日)至6(星期六)
d、 减去(3,‘天’)
//星期天是星期天吗?
如果(d.天()==0){
//调整到星期五
var upComingFri=d.day(‘星期五’);//星期五的日期,该星期日为
返回上周五减去(7,‘天’);
//但我们希望倒带,因为您希望停留在与原始日期相同的一周内
}
//星期六是星期六吗?
如果(d.天()==6){
//调整到星期五
var friday=d.day('friday');//sat在同一周
星期五返回;
}
//星期五吗?
如果(d.天()==5){
//调整到星期四
var星期四=d日(“星期四”);
星期四返回;
}
返回d;
}
t1=力矩(“2020年6月18日”,“年月日”);
r1=日期移位(t1);
console.log(r1.format(“DD.MM.YYYY”))
t2=力矩(“2020年6月17日”,“年月日”);
r2=日期移位(t2);
console.log(r2.format(“DD.MM.YYYY”))
t3=力矩(“2020年6月16日”,“年-月-日”);
r3=日期偏移(t3);
console.log(r3.format(“DD.MM.YYYY”))
t4=力矩('2020年6月15日','DD.MM.YYYY');
r4=日期偏移(t4);
console.log(r4.format(“DD.MM.YYYY”))

如果您使用的是momentjs,则无需切换到本机日期对象,因为使用momentjs可以做的一切都非常简单

使用momentjs帮助您获取一周中某一天的原始数据

0-星期日 1-星期一 ... .. . 6-星期六

若要查找本周的日期,请执行以下操作:
moment().day(“星期六”)
。 然后,您已经在使用它按给定的日期倒带日期

基于以上想法,您可以尝试此帮助器功能


函数dateShift(d){
//日期编号为0(星期日)至6(星期六)
d、 减去(3,‘天’)
//星期天是星期天吗?
如果(d.天()==0){
//调整到星期五
var upComingFri=d.day(‘星期五’);//星期五的日期,该星期日为
返回上周五减去(7,‘天’);
//但我们希望倒带,因为您希望停留在与原始日期相同的一周内
}
//星期六是星期六吗?
如果(d.天()==6){
//调整到星期五
var friday=d.day('friday');//sat在同一周
星期五返回;
}
//星期五吗?
如果(d.天()==5){
//调整到星期四
var星期四=d日(“星期四”);
星期四返回;
}
返回d;
}
t1=力矩(“2020年6月18日”,“年月日”);
r1=日期移位(t1);
console.log(r1.format(“DD.MM.YYYY”))
t2=力矩(“2020年6月17日”,“年月日”);
r2=日期移位(t2);
console.log(r2.format(“DD.MM.YYYY”))
t3=力矩(“2020年6月16日”,“年-月-日”);
r3=日期偏移(t3);
console.log(r3.format(“DD.MM.YYYY”))
t4=力矩('2020年6月15日','DD.MM.YYYY');
r4=日期偏移(t4);
console.log(r4.format(“DD.MM.YYYY”))

使用普通javascript实现这一点并不难。你不必减去3天,先看一天是什么,然后再减去,你可以计算出第一天要减去的天数,然后做一次减法,例如

//解析格式为d.m.y的字符串到目前为止
函数parseDMY(s){
设[d,m,y]=s.split(/\d/);
返回新日期(y,-m,d);
}
//s是d.m.y格式的日期
功能调整日期{
设d=parseDMY(s);
//周一和周二减去4天,周三减去5天,否则减去3天
d、 设置日期(d.getDate()-([,4,4,5][d.getDay()]| | 3));
返回d;
}
['29.03.2020','28.03.2020','27.03.2020','26.03.2020',
'01.04.2020','31.03.2020','30.03.2020'
].forEach=>console.log(parseDMY.toDateString()+'->'+

adjustDate.toDateString())使用纯javascript实现这一点并不难。你不必减去3天,先看一天是什么,然后再减去,你可以计算出第一天要减去的天数,然后做一次减法,例如

//解析格式为d.m.y的字符串到目前为止
函数parseDMY(s){
设[d,m,y]=s.split(/\d/);
返回新日期(y,-m,d);
}
//s是d.m.y格式的日期
功能调整日期{
设d=parseDMY(s);
//周一和周二减去4天,周三减去5天,否则减去3天
d、 设置日期(d.getDate()-([,4,4,5][d.getDay()]| | 3));
返回d;
}
['29.03.2020','28.03.2020','27.03.2020','26.03.2020',
'01.04.2020','31.03.2020','30.03.2020'
].forEach=>console.log(parseDMY.toDateString()+'->'+

adjustDate.toDateString())你没有说什么不起作用。此外,我认为您应该始终将中间日期存储为日期对象,而不是格式化字符串。仅在需要将其显示为字符串时将其格式化为可打印字符串。您还没有说什么不起作用。此外,我认为您应该始终将中间日期存储为日期对象,而不是格式化字符串。仅在需要将其显示为字符串时将其格式化为可打印字符串。