if (typeof(hoursoperation) != 'undefined' && hoursoperation != null)
{
console.log(myJson.acf['office_hours']);
}
Выше в моей методике Fetch API;Сначала я проверяю, существует ли office_hours
;и это так: console.log
выше печатает следующие данные:
Array(7)
0:
closing_time: "1600"
day: "7"
starting_time: "0800"
__proto__: Object
1:
closing_time: "1600"
day: "1"
starting_time: "0600"
__proto__: Object
2:
closing_time: "1600"
day: "2"
starting_time: "0600"
__proto__: Object
3: {day: "3", starting_time: "0600", closing_time: "1600"}
4: {day: "4", starting_time: "0600", closing_time: "1600"}
5: {day: "5", starting_time: "0600", closing_time: "1600"}
6: {day: "6", starting_time: "0700", closing_time: "1700"}
length: 7
__proto__: Array(0)
Как я могу узнать местное время пользователей;затем сравните через итерацию вышеупомянутого?
Я знаю, как легко это сделать с jQuery;но я застрял при приближении к этому был ванильный код ES6 javaScript.
то есть Вот как я смог добраться с помощью jQuery: (но все еще ищу метод ES6)
var today, starttime, endtime;
var optiondata = JSON.parse(data);
var officehours = optiondata.acf.office_hours;
today = new Date();
var starthour = parseInt(parseInt(officehours[today.getDay()].starting_time)/100);
var startmin = starthour*100 - parseInt(officehours[today.getDay()].starting_time);
var endhour = parseInt(parseInt(officehours[today.getDay()].closing_time)/100);
var endmin = endhour*100 - parseInt(officehours[today.getDay()].closing_time);
starttime = new Date(today.getFullYear(),today.getMonth(),today.getDate(),starthour,startmin,0,0);
endtime = new Date(today.getFullYear(),today.getMonth(),today.getDate(),endhour,endmin,0,0);
// calculate offset for timezones (PST or PDT) to ensure that AlgaeCal is actually open (using Vancouver, B.C.)
var tzurl = "https://maps.googleapis.com/maps/api/timezone/json?location=49.246670,-123.094729×tamp=" + parseInt(today.getTime()/1000) + "&key=XXXXX";
$.ajax({
url: tzurl,
dataType: "text",
success:function(tzdata){
$("#hours-operation").hide();
var timezonedata = JSON.parse(tzdata);
// subtract offsets to get GMT of start and end times of office hours and convert to milliseconds:
var chkstarttime = starttime.getTime() - timezonedata.dstOffset*1000 - timezonedata.rawOffset*1000;
var chkendtime = endtime.getTime() - timezonedata.dstOffset*1000 - timezonedata.rawOffset*1000;
// get offset for current local time and convert to milliseconds
var tz = today.toString().split("GMT")[1].split(" (")[0];
var chktoday = today.getTime() - parseInt(tz)/100*60*60*1000;
// check if current time is truly during open office hours:
if(chktoday >= chkstarttime && chktoday <= chkendtime){
// show "speak to our bone health specialists message"
$("#hours-operation").show();
}
}
});
}
});