Reputation: 509
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 + '×tamp=' + 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
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
Reputation: 2944
var minutesNow = currentHours*60+currentMinutes;
if(minutesNow >= 9*60+30 && minutesNow <= 19*60+30){ }
Upvotes: 0
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