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

0

я добавил фрагмент кода.Моя озабоченность предположить, что моя страница бронирования содержит выбор даты и ime picker с одной кнопкой отправки.if пользователь выбрал дату и время, когда он отправляет страницу после отправки. Мне нужно подтвердить выбранный пользователем день и время, с магазином, открытым днем и днем. Я написал часть кода после отправки, я вызываю эту функцию, но я не знаю, будет ли ее право или нет PLS, кто-то мне поможет. ниже я привел два примера, предположим, что пример, выбранный пользователем pls, решает эти примеры

После представления пользователя нам необходимо проверить эти данные. я добавил код ниже $ scope.dealers = [{

   S_Email_id: "[email protected]",
    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 - 12:00PM",
    "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.если я выбрал дату (ср. 02 декабря 2015 00:00:00 GMT + 0530 (стандартное время Индии)), что означает 02/12/2015/среда, и если пользователь выбрал время 11:00, мне нужно проверить с магазином (см. выше). Выбранная дата (ср. 02 декабря 2015 00:00:00 GMT + 0530 (стандартное время Индии)), что означает 02/12/2015/среда и время 11:00 матча между открытием магазина и закрытием времени, поэтому Мне нужно показать, что магазин предупреждений открыт.

2.if выбранная пользователем дата (Thu Dec 03 2015 00:00:00 GMT + 0530 (стандартное индийское время)), что означает 03/12/2015/четверг, и если пользователь выбрал время 20:00, мне нужно проверить день магазина (см. выше). Выбранная дата (Thu Dec 03 2015 2015 00:00:00 GMT + 0530 (стандартное индийское время)), что означает 03/12/2015/четверг, а выбранное время 20:00 не совпадает между открытием магазина и закрыть время, поэтому мне нужно показать, что магазин предупреждений закрыт или уходит

angular.module('myApp', [])
  .controller("myCntrl", function($scope, $filter) {

    $scope.isOpen = function(dealerSchedule) {
	console.log(dealerSchedule);
      
	  var udate='Wed Dec 02 2015 00:00:00 GMT+0530 (India Standard Time)';
	  var now = new Date(udate);
	  console.log(now);
	  var times = dealerSchedule[Object.keys(dealerSchedule)[now.getDay() - 1]].replace(/(\d\d\:\d\d)(AM|PM)/g, '1/1/1900 $1 $2').split(" - ");
     
	  //var nowTime = new Date('1/1/1900 ' + now.toLocaleTimeString(navigator.language, {
        //hour: '2-digit',
        //minute: '2-digit',
        //hour12: true
      //}));
	  var ntime ='11:00am';
	  var nowTime = new Date(ntime);
	  console.log(nowTime);
      var response = (times == "Leave" ? "Leave" : (nowTime >= new Date(times[0]) && nowTime <= new Date(times[1]) ? "Open Now" : "Closed Now"));
     
	  if(response =='Closed Now' || response =='Leave' )
	  {
	  alert('sorry shop closed');
	  }else
	  {
	  alert('shop opened now');
	  }
	  
	  
    };

	
    $scope.dealers = [{

       S_Email_id: "[email protected]",
        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 - 12:00PM",
        "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"
      },
    },  ]
    //var date = new Date();

    //$scope.hhmmsstt = $filter('date')(new Date(), 'hh:mm:ss a');
    //console.log($scope.hhmmsstt);
  })
//]]>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.min.js'></script>
  
  
  
<div ng-app="myApp">
  <div ng-controller="myCntrl">
    <label>Search on Label</label>
    <br>
  
    <br>
    <br>

    <div ng-repeat="dealer in dealers">

      {{dealer.Store_Name}}
      <br>{{dealer.S_Email_id}}
      <br>{{dealer.Day}}
      <br>
      <input type="button" value="order" ng-click="isOpen(dealer.Day)"/>
          
      <br>
      <br>
      <br>

    </div>

  </div>
</div>

демонстрация

2 ответа

0

Взгляните на momentjs api, это сделает вашу жизнь намного легче.

У них есть метод, называемый .isBetween().

Если вы не захотели использовать это, я бы создал объекты Date() и вызвал бы.getTime() на них с возвратом целого числа. Затем вы можете выполнить некоторую простую логическую логику со всеми значениями.

Кроме того, вам нужно будет узнать часовой пояс каждого из магазинов, чтобы эффективно рассчитать время.

new Date().getTimezoneOffset() поможет вам получить смещение часового пояса в минутах.

  • 0
    Можете ли вы, пожалуйста, добавьте jsfiddle для меня. На самом деле я новичок в технологии
  • 0
    В духе обучения создайте jsFiddle так, как вы думаете, он должен работать. Я помогу разрешить любые трудности, с которыми вы столкнетесь.
Показать ещё 1 комментарий
0

Дата не может проанализировать строку ntime.

var ntime ='11:00am';

var nowTime = new Date(ntime); //Not valid Date

На странице MDN On Date есть все, что вам нужно. При построении даты вам нужно будет установить каждый параметр следующим образом:

var selectedHour = 11; //24hr rules
var selectedminutes = 0;

var selectedDate = new Date(now.year, now.month, selectedHour, selectedMinutes);

Что касается проверки времени открытия магазина, вам нужно будет перевести часы своего бизнеса с строк на соответствующие даты.

Однако Кори прав об использовании MomentJs. Есть много неожиданных вещей, которые могут случиться во время работы со временем.

  • 0
    если я поставлю также не работает, пожалуйста, обновите мою скрипку
  • 0
    @martin при разборе времени устанавливает дату на 01.01.1900. var times = dealerSchedule[Object.keys(dealerSchedule)[now.getDay() - 1]].replace(/(\d\d\:\d\d)(AM|PM)/g, '1/1/1900 $1 $2').split(" - ");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню