Javascript - 变量前一个工作日

时间:2016-06-27 13:43:16

标签: javascript date

我正在尝试创建一个下拉列表,该列表会自动在文本字段中输入日期。

选项" 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="">

4 个答案:

答案 0 :(得分:5)

getDay()函数是您的问题的关键。我使用@zzzzBov片段作为迭代器。以下是我的解决方案

import xlrd
sheet_data = []   
wb = xlrd.open_workbook(Path_to_xlsx)
p = wb.sheet_names()
for y in p:
   sh = wb.sheet_by_name(y)
   for rownum in xrange(sh.nrows):
      sheet_data.append((sh.row_values(rownum)))

found_list = []
rows_to_be_saved = []
for i in sheet_data:
  if i[2] == "string1" or i[2] == "string2" or i[2] == "string3" or i[2] == "string4" or i[2] == "string5":
    found_list.append(i)
  else:
      rows_to_be_saved.append(i)

text_file = open("Output.txt", "w")
text_file.write(found_list)
text_file.close()

希望这能解决您的问题。快乐的编码!!

答案 1 :(得分:1)

您可以使用javascript getDay()方法返回一个表示星期几的整数:

  

getDay()返回的值是一个对应于星期几的整数:0表示星期日,1表示星期一,2表示星期二,依此类推。

See docs for getDay() on MDN

因此,如果getDay()返回0(星期日)或6(星期六),您可以编写一个返回false的方法。

答案 2 :(得分:1)

要达到预期的结果,请计算一天并减少上一个工作日的天数。

var number = "1,050000";
var changedNumber  = number.replace(/,/g, '.')
alert(parseFloat(changedNumber).toFixed(6).toString())

Codepen - http://codepen.io/nagasai/pen/wWgQYE

LBD计算部分

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

  });
});

答案 3 :(得分:0)

node.override['redisio']['install_dir'] = '/redis-setup'  -> rediswrapper cookbook 

与zzzzBov的function isBusinessDay(theDate){ theDay = theDate.getDay(); // Get day returns 0-6, respectively Sunday - Saturday if(theDay == 0 || theDay == 6){ return false; } else { return true; } }

一起使用

更简洁的写作方式:

while (!isBusinessDay(date)) { date.setDate(date.getDate() - 1) }