John Wick
John Wick

Reputation: 509

javascript get time in between

I have an ajax that returns a time using google api. What I want is to output some data if the time is between 9:30am to 7:30pm. However my condition is not working. Do you have any suggestion or ideas on this? Thank you in advance.

This condition doesnt work.

if ((currentHours >= 9) && currentMinutes >= 30 && (currentHours <= 19) && currentMinutes <= 30) {  }

This is my ajax.

var loc = '35.652832, 139.839478' // Tokyo expressed as lat,lng tuple
var targetDate = new Date() // Current date/time of user computer
var timestamp = targetDate.getTime() / 1000 + targetDate.getTimezoneOffset() * 60 // Current UTC date/time expressed as seconds since midnight, January 1, 1970 UTC
var apikey = 'myKey'
var apicall = 'https://maps.googleapis.com/maps/api/timezone/json?location=' + loc + '&timestamp=' + timestamp + '&key=' + apikey

$.ajax({
  async: false,
  type: "POST",
  url: apicall,
  success: function (response) {
    var offsets = response.dstOffset * 1000 + response.rawOffset * 1000 // get DST and time zone offsets in milliseconds
    var localdate = new Date(timestamp * 1000 + offsets) // Date object containing current time of Tokyo (timestamp + dstOffset + rawOffset)
    var currentHours = localdate.getHours();
    var currentMinutes = localdate.getMinutes();
    var currentSeconds = localdate.getSeconds();
    currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;
    currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds;
    currentTimeString = currentHours + ":" + currentMinutes;
    console.log('currentimestring ' + currentTimeString);
    // console.log(currentMinutes);
    if ((currentHours >= 9) && currentMinutes >= 30 && (currentHours <= 21) && currentMinutes <= 30) {
      _isSupportHoursResult = true;
      console.log(_isSupportHoursResult);
      if (_isSupportHoursResult) {
        jpsupp = true;
        console.log(jpsupp);
      } else {
        // window.location = "/jpprechatform/OffSupportRedirect.aspx?accessID=" + inAccessID;
        jpsupp = false;
      }
    } else {
      console.log('closing time');
    }
    console.log(localdate.toLocaleTimeString()) // Display current Tokyo date and time
  },
  error: function (xmlHttpRequest, error) {
    _isSupportHoursResult = false;
  },
  complete: function (response) {
  }
});

Upvotes: 0

Views: 60

Answers (3)

Varin
Varin

Reputation: 2443

Try statement should work:

if (currentHours >= 9 && currentHours <= 19)  {  
    if (currentHours = 9 && currentMinutes < 30) {
        return }
    if  (currentHours = 19 && currentMinutes > 30) {
        return  }
    else { YOUR CODE HERE  }
}

if ((currentHours >= 9 && currentMinutes >= 30) && (currentHours <= 19 && currentMinutes <= 30)) { }

Upvotes: 0

Tudor Ilisoi
Tudor Ilisoi

Reputation: 2944

var minutesNow = currentHours*60+currentMinutes;
if(minutesNow >= 9*60+30 && minutesNow <= 19*60+30){ }

Upvotes: 0

Dij
Dij

Reputation: 9808

in your condition you have used (currentMinutes >= 30 && currentMinutes <= 30) as it becomes contradictory. which seems like the problem. you can use:

if((currentHours > 9 && currentHours < 19) || (currentHours === 9 && currentMinutes >= 30) || (currentHours === 19 && currentMinutes <= 30)){}

Upvotes: 2

Related Questions