2016-10-26 3 views
-1

Я использую 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; 
     } 
    } 
} 

EDIT Когда я утешал значение с я получаю 27-10-2016, когда я использую момент (s, 'DD-MM-YYYY') Я получаю 1477506600000. Поэтому я думаю, что значение, которое я получаю, не является строкой, но когда я прямо сравниваю его с сегодняшней датой, используя момент, когда он говорит о недопустимой дате, я смущен. Любая помощь пожалуйста.

+0

Вы можете просто использовать [ 'isBefore'] (http://momentjs.com/docs/ #/query/is-before /), в вашем случае: 'moment (s) .isBefore (moment())' – VincenzoC

+0

Вещь start_date не является датой, ее строкой –

+0

Как мне сначала преобразовать ее на дату, затем сравнить? –

ответ

1

Как указано в моем первом комментарии вы можете просто использовать isBefore или isSameOrBefore.

Поскольку ваш ввод является строкой, вы можете parse в момент объекта, а затем использовать методы момента.

Ваше состояние будет:

moment(s, 'DD-MM-YYYY').isBefore(moment()) 
+0

Можем ли мы проверить его на время ? Я имею в виду, что пользователь может размещать заказы только до 14:00? не могли бы вы также взглянуть на этот вопрос? http://stackoverflow.com/questions/40243375/javascript-to-check-selected-date-is-todays-date-and-time-is-2pm-using-moment-j –

+0

Как проверить currentTime больше, чем 2 вечера? с моментом? –

+0

Вы можете проверить, что currentTime больше 2pm, используя 'moment(). IsAfter (момент ('14: 00 ',' HH: mm '))'. В любом случае ваш связанный вопрос имеет хороший ответ, на мой взгляд, вы должны отредактировать другой вопрос, указав, что '$ scope.orders.start_date' - это массив строк в формате« DD-MM-YYYY »и более четко указывая, какие временные диапазоны действительны и недействительны. – VincenzoC

1

Существует функция isAfter, доступная в тот момент, когда вы можете ее использовать.

http://momentjs.com/docs/#/query/is-after/

+0

Не работает .... –

+0

Пожалуйста, уточните мое редактирование один раз –

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; 
        } 
} 

Надеется, что это помогает :)

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; 

    }