日期计算功能不太正确.

嗨,大家. 我有一个表格,用户从JavaScript样式日历中选择一个日期,它将日期放入格式DD/mm/yyyy的字段中. 我希望表格可以将此用户选择的日期与将要处理的日期进行比较,这是今天的日期7天. 原因是,该字段是表单上的"要求"字段,我不希望用户在过去的日期或从今天起少于7天的日期输入日期. 因此,它将从今天起7天的日期输入日期. 我有逻辑权利(我认为),并在此处包括在这里,但是在大会的日期中,这一天或更高的日期似乎可以旅行! 有任何想法吗???

选择 | 换行 | 行号
  1. <script>
  2.     function checkadate(){
  3.  
  4. //This bit gets todays date and add seven days
  5. var currentdate = new Date();
  6. currentdate.setDate(currentdate.getDate()+7);
  7. var day = currentdate.getDate();
  8. var month = currentdate.getMonth() + 1;
  9. var year = currentdate.getFullYear();
  10.  
  11. //This bit puts that date in to dd/mm/yyyy format
  12. var todat = (day + "/" + month + "/" + year)
  13.  
  14. alert("Todays date plus 7 is " +todat);
  15.  
  16. //This is the date entered by the user.
  17. var ReqDate =  document.getElementById("DateRequired").value;
  18.  
  19. alert("Selected date is " + ReqDate);
  20.  
  21. var SDate = (todat);
  22. var EDate =  document.getElementById("DateRequired").value;
  23. var endDate = new Date(EDate);
  24. var startDate= new Date(SDate);
  25.  
  26.  
  27. if(startDate > endDate){
  28.     alert("Date must be at least 5 working days in advance to allow for processing.\nThe earliest date available is " + SDate);
  29.     document.getElementById("DateRequired").value = SDate;
  30.     return false;
  31.     }else{
  32. }
  33.  
  34.  
  35.  
  36. }
  37. </script>
# 回答1

您已经将当前日期作为开始日期的日期对象. 使用用户输入的日期创建另一个日期对象,然后比较两者.
# 回答2

赦免我的无知,但我不太关注......../
# 回答3

在第5-6行上,您创建了一个日期对象并设置日期. 一行17,您具有结束日期的日期值. 使用str.split("/")分开字符串,以获取日期/月/年值的数组. 然后创建一个新的日期对象并使用 setlyear() 设置日期. 现在,您可以准备好两个日期对象进行比较.
# 回答4

同样,我可以看到逻辑,但是我的日期格式格式一定有问题,现在我在第三个警报框上 - 尝试在重新定位时将NAN放在第三个警报框上. 我已经修改并简化了脚本,上次杀死了,但它仍然没有解决. 凝固的getdate是否将其放入DD/mm/yyyy或美国格式中? 我从表格中带来的价值是在DD/mm/yyyy中,这会导致问题吗? 我包括了更新的代码. 谢谢...

选择 | 换行 | 行号
  1. <script>
  2.     function checkadate(){
  3.  
  4. //Gets todays date and add seven days.
  5. var currentdate = new Date();
  6. currentdate.setDate(currentdate.getDate()+7);
  7. alert(currentdate);
  8.  
  9.  
  10. //Gets date entered
  11. var ReqDate =  document.getElementById("DateRequired").value;
  12.  
  13. //Splits date into an array
  14. var ReqArray=ReqDate.split("/");
  15. alert(ReqArray);
  16.  
  17. var ReqDate = new Date();
  18. ReqDate.setFullYear(ReqArray);
  19. alert(ReqDate);
  20. //**Failing here**
  21.  
  22.  
  23. if(ReqDate > currentdate){
  24.     alert("Date must be at least 5 working days in advance to allow for processing.\nThe earliest date available is " + SDate);
  25.     document.getElementById("DateRequired").value = SDate;
  26.     return false;}
  27.  
  28. }
  29. </script>
# 回答5

单独使用数组值,并查看如何使用设置的固定性(带有三个参数).

选择 | 换行 | 行号
  1. //Gets date entered
  2. var ReqDate =  document.getElementById("DateRequired").value;
  3.  
  4. //Splits date into an array
  5. var ReqArray=ReqDate.split("/");
  6.  
  7. var ReqDate = new Date();
  8. ReqDate.setFullYear(ReqArray[2],ReqArray[1]-1,ReqArray[0]);
  9.  
# 回答6

杰出的!! 使它起作用了,非常感谢您的XCellent像往常一样! 我已经发布了工作代码供将来使用的任何人使用,因为我花了很长时间才能完成反思是一项简单的任务. 正如您所看到的那样,JUT更改参数. 这个链接 有用(如果您还没有看过)和 随附的参考 . 无论如何,很高兴听到您已经有效.

标签: Javascript

添加新评论