检查date是否有效
Check if date is a valid one
场景如下:
我有一个String
日期和一个不同的日期格式。例:
日期:2016-10-19
dateFormat:"DD-MM-YYYY"。
我需要检查这个日期是否有效。
我已经尝试了以下事情
var d = moment("2016-10-19",dateFormat);
d.isValid()
每次都返回false
。不瞬间。js解析日期在给定的格式?
然后我尝试在DD-MM-YYYY
格式日期,然后将其传递给Moment.js:
var d = moment("2016-10-19").format(dateFormat);
var date = moment(d, dateFormat);
现在date.isValid()
给了我想要的结果,但是这里Moment.js日期对象被创建了两次。我怎样才能避免这种情况呢?有没有更好的解决方案?
仅供参考,我不允许更改dateFormat
。
能够找到解决方案。因为我得到的日期是ISO格式,只提供日期到时刻将验证它,不需要传递dateFormat。
var date = moment("2016-10-19");
然后date.isValid()
给出期望的结果。
var date = moment('2016-10-19', 'DD-MM-YYYY', true);
您应该在调用moment
时添加第三个参数来强制严格解析。下面是moment文档的相关部分http://momentjs.com/docs/#/parsing/string-format/它位于本节的末尾。
我刚发现一个很乱的案子。
moment('Decimal128', 'YYYY-MM-DD').isValid() // true
当日期和日期格式不同时,如何使用Moment检查字符串是否为有效日期
对不起,但是这个线程上的任何给定的解决方案实际上回答了被问到的问题吗?
我有一个字符串日期和一个不同的日期格式。例:日期:2016-10-19dateFormat:"DD-MM-YYYY"。我需要检查一下这个日期是否有效。
const date = '2016-10-19';
const dateFormat = 'DD-MM-YYYY';
const toDateFormat = moment(new Date(date)).format(dateFormat);
moment(toDateFormat, dateFormat, true).isValid();
// Note I: `new Date()` circumvents the warning that
// Moment throws (https://momentjs.com/guides/#/warnings/js-date/),
// but may not be optimal.
// Note II: passing `true` as third argument to `moment()` enables strict-mode
// https://momentjs.com/guides/#/parsing/strict-mode/
但老实说,我不明白为什么moment.isDate()
(如文档所示)只接受对象。在我看来,还应该支持字符串
给你:Working fiddle
$(function(){
var dateFormat = 'DD-MM-YYYY';
alert(moment(moment("2012-10-19").format(dateFormat),dateFormat,true).isValid());
});
我使用moment和new Date来处理undefined
数据值的情况:
const date = moment(new Date("2016-10-19"));
因为:moment(undefined).isValid() == true
moment(new Date(undefined)).isValid() == false
console.log(` moment('2019-09-01', 'YYYY-MM-DD').isValid()? ` +moment('2019-09-01', 'YYYY-MM-DD').isValid())
console.log(` moment('2019-22-01', 'YYYY-DD-MM').isValid()? ` +moment('2019-22-01', 'YYYY-DD-MM').isValid())
console.log(` moment('2019-22-22', 'YYYY-DD-MM').isValid()? ` +moment('2019-22-22', 'YYYY-DD-MM').isValid())
console.log(` moment('undefined', 'YYYY-DD-MM').isValid()? ` +moment('undefined', 'YYYY-DD-MM').isValid())
moment('2019-09-01', 'YYYY-MM-DD').isValid()? true
moment('2019-22-01', 'YYYY-DD-MM').isValid()? true
moment('2019-22-22', 'YYYY-DD-MM').isValid()? false
moment('undefined', 'YYYY-DD-MM').isValid()? false
我用的是moment.js
let value = '19-05-1994';
let check = moment(value,'DD-MM-YYYY', true).isValid();
console.log(check) //returns true
return check
如果日期有效,则getTime()
将始终等于其本身。
var date = new Date('2019-12-12');
if(date.getTime() - date.getTime() === 0) {
console.log('Date is valid');
} else {
console.log('Date is invalid');
}
可以使用
var d = moment("2016-10-19",dateFormat);
if(!isNaN(d)) {
// d is a valid date.
}
moment("2022-10-18 04:00 AM", "YYYY-MM-DD HH:mm AM", true).isValid()
试试这个。这不是很好,但只要输入是日期选择器中的常量格式,它就可以工作。
在这个例子中,它是来自你的选择器的badDate
https://jsfiddle.net/xs8tvox9/var dateFormat = 'DD-MM-YYYY'
var badDate = "2016-10-19";
var splittedDate = badDate.split('-');
if (splittedDate.length == 3) {
var d = moment(splittedDate[2]+"-"+splittedDate[1]+"-"+splittedDate[0], dateFormat);
alert(d.isValid())
} else {
//incorrectFormat
}
- 如何在AngularJS中有效地检查日期是否有效
- 检查蒸汽配置文件url是否有效
- 此multi-onChange事件是否有效
- 如果标记是使用 JavaScript 动态构建的,Schema.org 标记是否有效?
- 当用户在移动网络上时,GeoIP是否有效
- 如果系统时间发生更改,setTimeout是否有效
- JQuery-检查IMG src是否有效
- Regex以确定该值在JS中是否有效,返回null
- 在不重新运行jquery验证的情况下检查表单是否有效
- 使用JSONP内容压缩web服务响应是否有效
- 检查字符串是否为有效的html标记
- Javascript正则表达式,用于检查字符串是否为有效数字
- 是否可以在字段有效时触发事件(html5)
- Angular 2-检查图像url是否有效或已损坏
- Jquery/Javascript检查我的单词是否有效
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 我如何在Capybara中测试页面是否未重新加载(JavaScript onClick拦截有效)
- 一种确定网站是否有效的方法
- 在 Zurb Foundation 5 中没有 JavaScript 的顶栏是否有效
- 使用 javascript 确定电子邮件地址是否有效