如何检查指定范围内的选定时间?

时间:2015-12-02 20:04:05

标签: javascript jquery angularjs

我有预订页面,其中包含日期选择器和时间选择器以及一个按钮。如果用户单击该按钮,我们需要检查所选日期和时间是否与商店日期和时间相匹配,如果它不匹配我需要显示消息,应该说请在此选择时间(例如:星期四:上午09:10 - 下午06:30)。从日期开始我已经有了一天,这里我们已经开店时间和关闭时间了

Day: {                   
    "monday"    : "09:10AM  -  06:30PM",
    "tuesday"   : "09:10AM  -  06:30PM",
    "wednesday" : "09:10AM  -  06:30PM",
    "thursday"  : "09:10AM  -  06:30PM",
    "friday"    : "09:10AM  -  06:30PM",
    "saturday"  : "10:15AM  -  04:15PM",
    "sunday"    : "10:15AM  -  04:15PM"
    },

我还没有添加日期和时间选择器假设用户选择了以下条件 例如。 1.如果我选择日期(2015年12月2日),控制器我得到日期(星期三)到日期和用户选择时间11:00 am我需要检查商店日(如上所述)。选择日期和时间匹配商店开放和关闭时间之间所以我们不想显示任何消息bcoz用户选择正确的时间。 2.如果我选择日期(2015年12月3日),控制器我得到日期(星期四)到日期和用户选择时间08:00 pm我需要检查商店日(如上所述)。选择日期和时间商店开启和关闭时间之间不匹配所以在这里我需要提醒并且它将显示(对不起商店现在关闭,商店营业时间:09:10AM和商店关闭时间:06:30 PM请选择此时间间隔)。 我是编程的新手,我正在尝试3天,这个请帮助我。

$scope.check=function(){

//Assume This is Shop details We need to check with this data 
  $scope.dealers = [{

        S_Email_id: "aditiya@gmail.com",
        S_Store: "samsung",
        status:"",
        Store_Name: "Adtiya Samsung Store",
        S_Services: "Regular Service,Software Faults,Hardware Faults",
        Store_long_description: "Undertake all kind of samsung mobiles",
        Store_short_description: "Undertake all kind of samsung mobiles",
        Day: {
        "monday": "09:10AM - 06:30PM",
        "tuesday": "09:10AM - 06:30PM",
        "wednesday": "09:10AM - 06:30PM",
        "thursday": "09:10AM - 06:30PM",
        "friday": "09:10AM - 06:30PM",
        "saturday": "10:15AM - 04:15PM",
        "sunday":"10:15AM - 04:15PM"
        },
    }];

    //Condtion one 
        var sdate =userselecteddate;
        console.log(sdate);
        //here i am getting Wed Dec 02 2015 00:00:00 GMT+0530 (India Standard Time)
        var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
        var nData = new Date(sdate);
        console.log(dayNames[nData.getDay()]);
        //Wednesday

        var stime=userselectedtime;
        console.log(stime);//11:00am

        //Condtion Two 
        var sdate =userselecteddate;
        console.log(sdate);
        //here i am getting Thu Dec 03 2015 00:00:00 GMT+0530 (India Standard Time)
        var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
        var nData = new Date(sdate);
        console.log(dayNames[nData.getDay()]);
        //Thursday

        var stime=userselectedtime;
        console.log(stime);
        //08:00pm



        //cheching code 


}

以上我根据条件展示了我在控制台中获得的东西帮助我前进

1 个答案:

答案 0 :(得分:0)

在您捕获了用户输入的日期和时间值之后,假设这些值以某种方式存储在$scope中:

$scope.isValidDate = function isValidDateFn(dateVal) {
  //Logic here that returns whether or not you have a valid time;
  return booleanThatIsTrueOrFalseBasedOnTheOfficeHours;
};

$scope.isValidTime = function isValidTimeFn(timeVal) {
  return booleanThatIsTrueOrFalseBasedOnTheOfficeOpenDays;
};

$scope.isValidOfficeDateTimeSubmission = function isValidOfficeDateTimeSubmissionFn(dateString, timeString) {
  var validTime = $scope.isValidTime(timeString),
      validDate = $scope.isValidDate(dateString);

  var validationObject = {
      errors: [], 
      valid: validTime && validDate
  }

  if (!validTime) {
     validationObject.errors.push("Invalid Time Message With Whatever Else You Want To Put In Here")
  }

  if (!validDate) {
     validationObject.errors.push("Invalid Date Message With Whatever Else You Want To Put In Here")
  }


  return validationObject
};

逻辑是供您确定的,但是这是一种相当不错的方法,能够通过validationObject检索两个错误消息或只需要一种类型。然后,您将拥有一个通过ng-click调用的范围函数来运行此函数,检查从valid函数返回的validationObject的{​​{1}}属性,然后执行任何错误显示,成功等,基于验证对象的内容。

isValidOfficeDateAndTimeSubmission