【问题标题】:Dynamic date Caluculation in Java scriptJavascript中的动态日期计算
【发布时间】:2018-04-25 10:51:54
【问题描述】:

我有两个dijit/form/DateTextBox 的数据选择器。一个用于开始日期,另一个用于结束日期。

我想检查是否“Enddate > startdate+ 90days3month)”,如果是,那么我需要用 startdate+ 90days 重置结束日期。

从 DateTextBox 2018-04-25 获取的格式。请帮忙解决这个问题

var fromDate=digit.byId('startDate');

if(fromDate!=null) {

  var fromtimestamp=new Date(digit.byId('startDate')).getTime();
  var endtimestamp=new Date(digit.byId('endDate')).getTime();
  var timestamp= new Date(digit.byId('startDate')).getTime+ (30 *24*60*60*1000);

  if(endtimestamp>timestamp) {
    // wants to reset with startdate+ 90days
  } 
}

【问题讨论】:

  • 你能链接一个你目前拥有的代码的sn-p吗?
  • 嗨 slee423 添加了相同的
  • 看来您引用的 timestamp 参数不正确。您将其设置为timestamp= new Date(digit.byId('startDate')).getTime+ (30 *24*60*60*1000);,而应将其设置为timestamp= new Date(digit.byId('startDate')).getTime() + 30 *24*60*60*1000;

标签: javascript dojo dijit.form


【解决方案1】:

您可以实现这一点,但使用dateBox min constaraint 在您的开始日期设置更改事件,然后设置digit.byId('endDate').constraints.min 开始日期+ 90 如:

digit.byId('startDate').on("change",function() {
  var end = new Date(this.value);
  end.setDate(end.getDate() + 90);
  digit.byId('endDate').constraints.min = end;
})

参见下面的程序化 sn-p :

require(["dijit/form/DateTextBox", "dijit/form/Button","dojo/on" ,
  "dojo/domReady!"
], function(DateTextBox,Button, On ) {

		var startdate = new DateTextBox({
      constraints:{
        datePattern:'yyyy-MM-dd'
      }
    }, "startDate");
    
    var enddate = new DateTextBox({
      constraints:{
        datePattern:'yyyy-MM-dd'
      }
    }, "endDate");
    
    startdate.on("change",function() {
      var end = new Date(this.value);
      end.setDate(end.getDate() + 90);
      enddate.constraints.max = end;
      enddate.constraints.min = new Date(this.value);
    })
    
});
<link href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet"/>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>

<body class="claro">
  start :<div id="startDate" ></div>
  
  end : <div id="endDate" ></div>
</body>

【讨论】:

  • 嗨 Berrita,但我可以选择开始日期之后的任何日期作为结束日期。但在这里它不允许我选择任何日期,直到深夜。
  • @jcrshankar 我不明白,你能解释一下吗,你需要只选择 90 天内的日期吗(在开始日期和 90 之间?)
  • 如果我了解您的需求,请查看我的更新答案
  • 我可以选择当前日期或未来日期之前的任何日期作为开始日期。作为结束日期,我可以选择开始日期之后的任何日期,但距离开始日期不超过 90 天
  • 太好了,很高兴能帮到你:)
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多