Javascript 使用momentjs比较日期
我正在使用angularjs和矩库。我有一个对象Javascript 使用momentjs比较日期,javascript,momentjs,Javascript,Momentjs,我正在使用angularjs和矩库。我有一个对象start\u date,它包含多个日期,一旦用户单击“继续”,我就会将每个日期与今天进行比较,如果给定的日期是过去的,则抛出一个错误 这是我的密码: $scope.checkDateTime = function(){ angular.forEach($scope.orders.start_date,function(s){ console.log('data'+s);
start\u date
,它包含多个日期,一旦用户单击“继续”,我就会将每个日期与今天进行比较,如果给定的日期是过去的,则抛出一个错误
这是我的密码:
$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;
}
}
}
$scope.checkDateTime=function(){
angular.forEach($scope.orders.start_日期,函数){
console.log('data'+s);
if(矩.format('DD-MM-YYYY')<矩().format('DD-MM-YYYY')){
游泳({
标题:“请选择一个有效日期。”,
文本:“请选择有效的开始日期。”,
confirmButtonClass:“btn btn主添加产品btn”,
imageUrl:'images/vmy-sub.png'
})
返回false;
}
}
}
编辑
当我安慰
s
的值时,我得到的是“27-10-2016”,当我使用时刻(s,'DD-MM-YYYY')
时,我得到的是“1477506600000”。所以我认为我得到的值不是字符串,但当我使用时刻直接将其与今天的日期进行比较时,它会显示“无效日期”,我很困惑。请提供帮助。有一个isAfter功能,您可以随时使用它
您也可以使用简单的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;
}
}
$scope.checkDateTime=function(){
angular.forEach($scope.orders.start_日期,函数){
console.log('data'+s);
s=新日期;
var today=新日期();
如果(s.getTime()
希望这有帮助:)如我在第一条评论中所述,您可以简单地使用或 由于您的输入是一个字符串,所以您可以将其转换为矩对象,然后使用矩方法 你的情况如下:
moment(s, 'DD-MM-YYYY').isBefore(moment())
这项艰苦的工作对我来说很有用,试试看
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;
}
var sDate=新日期(document.addproject.sDate.value);
var-eDate=新日期(document.addproject.eDate.value);
var today=新日期();
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-今天;
var cy=today.getFullYear();
var cm=today.getMonth();
var cd=today.getDate();
var startdate=null;
var enddate=null;
//警惕(“某些”);
if(sy
在您的情况下,您只需使用:矩。isBefore(矩())
问题是开始日期不是日期,而是字符串我应该如何首先将其转换为日期然后进行比较?您可以将字符串转换为矩对象,然后使用矩方法。输入字符串的格式是什么?也许您可以编辑您的问题以添加更多详细信息。我们只需要知道$scope.orders.start\da的值是什么te
,例如,您可以提供console.log('data'+s);打印的内容。无论如何,我建议编辑您的问题以添加详细信息,而不是将其添加到注释中:)我们可以检查一下时间吗?我的意思是用户最多只能在下午2点下单?您也可以看看这个问题吗?我如何检查currentTime是否大于下午2点?使用矩?您可以使用moment().isAfter(矩('14:00','HH:mm')检查currentTime是否大于下午2点
。无论如何,您链接的问题有一个很好的答案,我认为您必须编辑另一个问题,指定$scope.orders.start\u date
是DD-MM-yyyyy
格式的字符串数组,并更清楚地说明哪些时间范围有效,哪些无效。您可以使用矩.Js进行日期比较。