javascript - javascript,如何验证文本框格式的日期范围?
问题描述
我正在研究特定的框架,并且内置日期框没有选择小时:分钟:秒的选项。所以我使用文本框为搜索引擎创建了这种格式,一切正常。我唯一担心的是,如果我不限制从 DATE1 到 DATE2 的新日期范围,这会提取太多数据。如何在将脚本实际发送到数据库之前设置 1 个月的限制?
var today = new Date();
today.setDate(today.getDate() - 1);
var DATE1 = new TextBox({
applyTo: 'DATE1',
defaultValue: today.getFullYear() + "-" + ("0" + (today.getMonth() + 1)).slice(-2) +
"-" + ("0" + today.getDate()).slice(-2) +" " + "00:00:00",
width: 150
});
var DATE2 = new TextBox({
applyTo: 'DATE2',
defaultValue: new Date().getFullYear() + "-" + ("0" + (new Date().getMonth() + 1)).slice(-2) +
"-" + ("0" + new Date().getDate()).slice(-2) +" " + "00:00:00",
width: 150
});
btnSearch.on('click', function(){
var datea = DATE1.getValue() ? DATE1.getValue() : "";
var dateb = DATE2.getValue() ? DATE2.getValue() : "";
}
显然.. 像 if((dateb-datea) > 31) 这样的东西是行不通的。帮助。:(
解决方案
实际上,您绝对可以在 JS 中减去日期对象。唯一的问题是结果以毫秒数的形式出现。
new Date('2020-03-15') - new Date('2020-03-10')
=> 432000000
432000000 / (1000 * 60 * 60 * 24)
=> 5
编辑:
由于实际数据值从文本框转换为对象
如果此用例可以接受固定的天数距离,那么只需进行减法(使用适当的比例因子)就足够了。
但是,由于您想要检查(例如)今天的日期是否为 2020-03-22 并且下一个日期不迟于 2020-04-22,那么您需要在该月实际执行逻辑并且每个日期的天值。
例如
if (!(dateb.getMonth() > datea.getMonth() && dateb.getDate() > datea.getDate())) {
// ...
}
编辑:
DATE1.getValue() 将文本框的值作为字符串返回,因此您需要将该字符串转换为某种数据对象,以便更轻松地进行逻辑测试。Date 类可以接受时间作为其构造函数的输入字符串的一部分,但字符串需要采用类识别的格式之一(例如YYYY-MM-DDTHH:MM:SSZ
,其中“T”是字母 T,“Z”代表时间区域 - 请参阅https://www.w3schools.com/js/js_date_formats.asp)。您需要稍微调整一下字符串,但这似乎并不太复杂。下面的准伪代码示例。
btnSearch.on('click', function(){
if (DATE1.getValue() && DATE2.getValue()) { // Ensure that both values exist.
var firstDateObject = new Date(
DATE1.getValue().split(' ').join('T') + <timezone stuff>
);
var secondDateObject = new Date(
DATE2.getValue().split(' ').join('T') + <timezone stuff>
);
// Do some logic...
}
}
推荐阅读
- python - 无法运行。它在你的路径中吗?(Atom,Ubuntu)
- cassandra - 在 Apache cassandra 2.2.8 中的 system.log 中提示超时
- xmpp - 我不能发送通知 whit strophe.js,什么是必要的模块?
- node.js - 无法读取未定义的属性“路径”
- sql-server - 由于子查询,INSERT 出错
- c++ - g++ 的严格混叠警告准确性
- matplotlib - 在 sns.clustermap 中为 color_row 添加更多空间
- scikit-learn - word2vec 的余弦相似度
- javascript - 无法在 recordRTC 中记录更高的帧速率
- java - NotifyDataSetChanged 在不同的片段上