我正在使用angularjs和时刻库,我有start_date
对象包含几个日期,一旦用户点击继续我正在检查每个日期以检查它是否是有效日期i,e大于今天或等于今天,否则我就错了。
这是我的代码
$scope.checkDateTime = function(){
angular.forEach($scope.orders.start_date,function(s){
console.log('data'+s);
if (moment(s).format('DD-MM-YYYY') < moment().format('DD-MM-YYYY')) {
swal({
title: "Please select a valid date.",
text: "Please select valid start date.",
confirmButtonClass: "btn btn-primary add-prod-btn",
imageUrl: 'images/vmy-sub.png'
})
return false;
}
}
}
修改 当我安慰s的价值时,我得到27-10-2016,当我使用时刻(s,&#39; DD-MM-YYYY&#39;)我得到1477506600000.所以我认为我得到的价值是不是字符串,但是当我直接将它与今天的日期比较时使用它表示无效日期时,我很困惑。请帮忙。
答案 0 :(得分:1)
您可以使用isAfter功能。
答案 1 :(得分:1)
如我在第一条评论中所述,您只需使用isBefore
或isSameOrBefore
。
由于您的输入是一个字符串,您可以parse进入时刻对象,然后使用时刻方法。
您的情况将是:
moment(s, 'DD-MM-YYYY').isBefore(moment())
答案 2 :(得分:1)
这项艰苦的工作适合我尝试
var sDate = new Date(document.addproject.sdate.value);
var eDate = new Date(document.addproject.edate.value);
var today = new Date();
var sy=sDate.getFullYear();
var sm=sDate.getMonth();
var sd=sDate.getDate();
var ey=eDate.getFullYear();
var em=eDate.getMonth();
var ed=eDate.getDate();
// var cymd=sDate - today;
var cy=today.getFullYear();
var cm=today.getMonth();
var cd=today.getDate();
var startdate=null;
var enddate=null;
// alert("some ");
if(sy < cy){
startdate="notgood";
}
else if(sm < cm){
startdate="notgood";
}
else if(sd < cd){
startdate="notgood";
}
else{
startdate="good";
}
if(ey < cy){
enddate="notgood";
}
else if(em < cm){
enddate="notgood";
}
else if(ed < cd){
endtdate="notgood";
}
else{
enddate="good";
}
if((document.addproject.sdate.value == "")||
(startdate !="good" ))
{
alert( "Please provide project Excepted Start Date !\n" +
"Start date must be valid " );
document.addproject.sdate.focus() ;
return false;
}
if((document.addproject.edate.value == "")||
(enddate !="good"))
{
alert( "Please provide project Excepted End Date!\n" +
"End date must be valid" );
document.addproject.edate.focus() ;
return false;
}
答案 3 :(得分:0)
您也可以使用简单的 Javascript日期方法来执行此操作。请查看以下内容。
$scope.checkDateTime=function(){
angular.forEach($scope.orders.start_date,function(s){
console.log('data'+s);
s = new Date(s);
var today = new Date();
if (s.getTime() < today.getTime()) { // Here "getTime()" converts the date to milliseconds where you can compare in terms of milliseconds. this worked well for me.
swal({
title: "Please select a valid date.",
text: "Please select valid start date.",
confirmButtonClass: "btn btn-primary add-prod-btn",
imageUrl: 'images/vmy-sub.png'
})
return false;
}
}
希望这会有所帮助:)