Javascript-前一个工作日的变量
Javascript - variable previous business day
我正在尝试创建一个下拉列表,该列表将自动在文本字段中输入日期。
选项"LBD"当前返回昨天的日期,但是,我希望它返回最后一个工作日的日期。因此,如果今天是星期一,它将返回星期五的日期,如果今天为星期二,则返回星期一的日期。等等。
这就是我目前所掌握的:
Javascript:
<script>
$(document).ready(function() {
$("#datetype option").filter(function() {
return $(this).val() == $("#datepickstart").val();
return $(this).val() == $("#datepickend").val();
}).attr('selected', true);
var d = new Date();
var yesterday = (d.getMonth() + 1) + "/" + (d.getDate() - 1) + "/" + d.getFullYear();
var today = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
var fdm = (d.getMonth() + 1) + '/01/' + d.getFullYear();
var fdy = '01/01/' + new Date().getFullYear();
$("#datetype").on("change", function() {
var selectedVal = $(this).find("option:selected").attr("value");
if (selectedVal == 'LBD') {
$("#datepickstart").val((yesterday));
$("#datepickend").val((yesterday));
}
if (selectedVal == 'MtD') {
$("#datepickstart").val(fdm);
$("#datepickend").val(today);
}
if (selectedVal == 'YtD') {
$("#datepickstart").val(fdy);
$("#datepickend").val(today);
}
});
})
</script>
html:
<select id="datetype" name="datetype">
<option value="">Please select...</option>
<option value="LBD">LBD</option>
<option value="MtD">MtD</option>
<option value="YtD">YtD</option>
</select>
<input type="text" id="datepickstart" name="datepickstart" value="">
<input type="text" id="datepickend" name="datepickend" value="">
getDay((函数是解决问题的关键。我使用@zzzzBov片段作为迭代器。以下是我的解决方案
step1:
function isBusinessDay(date){
var day = date.getDay();
if(day == 0 || day == 6 ){
return false;
}
return true;
}
step2:
var date = new Date();
while (!isBusinessDay(date)) { date.setDate(date.getDate() - 1) }
console.log(date);//date always between monday to friday
希望这能解决你的问题。编码快乐!!
您可以使用javascript getDay()
方法返回一个表示一周中某一天的整数:
getDay((返回的值是一个对应于星期几的整数:0表示星期天,1表示星期一,2表示星期二,依此类推
请参阅MDN 上的getDay((文档
因此,如果getDay((返回0(星期日(或6(星期六(,您可以编写一个返回false的方法。
要实现您的预期结果,请计算天数并减少天数以获得前一个工作日。
$(document).ready(function() {
$("#datetype option").filter(function() {
return $(this).val() == $("#datepickstart").val();
return $(this).val() == $("#datepickend").val();
}).attr('selected', true);
var d = new Date();
var bd = d.getDay();
if (bd < 2) {
if (bd == 0) {
bd = 2;
} else {
bd = 3;
}
} else {
bd = 1;
}
var today = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
var lbd = (d.getMonth() + 1) + "/" + (d.getDate() - bd) + "/" + d.getFullYear();
var fdm = (d.getMonth() + 1) + '/01/' + d.getFullYear();
var fdy = '01/01/' + new Date().getFullYear();
$("#datetype").on("change", function() {
var selectedVal = $(this).find("option:selected").attr("value");
if (selectedVal == 'LBD') {
$("#datepickstart").val(lbd);
$("#datepickend").val(today);
}
if (selectedVal == 'MtD') {
$("#datepickstart").val(fdm);
$("#datepickend").val(today);
}
if (selectedVal == 'YtD') {
$("#datepickstart").val(fdy);
$("#datepickend").val(today);
}
});
});
Codepen-http://codepen.io/nagasai/pen/wWgQYE
LBD计算部分
var bd = d.getDay();// get day from today's date which be between 0-6 (0 is Sunday and 6 is Saturday
if (bd < 2) {
if (bd == 0) {
bd = 2;
} else {
bd = 3;
}
} else {
bd = 1;
}
//variable lbd will get the last business day by reducing the calculated lbd from today's date
var lbd = (d.getMonth() + 1) + "/" + (d.getDate() - bd) + "/" + d.getFullYear();
function isBusinessDay(theDate){
theDay = theDate.getDay(); // Get day returns 0-6, respectively Sunday - Saturday
if(theDay == 0 || theDay == 6){
return false;
} else {
return true;
}
}
与zzzzBov的while (!isBusinessDay(date)) { date.setDate(date.getDate() - 1) }
一起使用
一种更简洁的书写方式:
function isBusinessDay(theDate){
theDay = theDate.getDay(); // Get day returns 0-6, respectively Sunday - Saturday
if(theDay == 0 || theDay == 6) return false;
return true;
}
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 从工作日结束到下一个工作日开始的完整日历JS包装时间
- JS函数..编写一个函数来查找用户的工作日'’s生日
- JavaScript - 是否可以在不使用OR的情况下在一个条件下检查多个工作日
- 时刻 js 在给定指定工作日的情况下获取下一个日期
- 查找给定工作日的下一个实例(即.星期一)与时刻.js
- 给定一个工作日和它发生的月份,我能得到它在恒定时间内的顺序位置吗
- 下一个工作日
- Javascript-前一个工作日的变量