私は JavaScript、JSON、および date.js を使用しており、JSON ファイルを解析して、現時点で行われているクラスのリストのみを表示しようとしています。JSON ファイルを解析できたので、現在の日に行われるクラスのみが表示されます。ただし、時間を正しく解析できませんでした。
私のJSONファイルの一部:
[
{
"day": "Monday",
"activities": [
{
"activity": "Freestyle ",
"times": [
{"start":"6:30 AM","end":"7:15 AM"},
{"start":"7:15 AM","end":"8:15 AM"},
{"start":"5:15 PM","end":"6:00 PM"}
]
},
{
"activity": "Open Skate ",
"times": [
{"start":"11:30 AM","end":"5:00 PM"},
{"start":"7:30 PM","end":"9:30 PM"}
]
},
{
"activity": "Holiday Snowbunnies 1 ",
"times": [
{"start":"6:00 PM","end":"6:30 PM"}
]
}
]
},
{
"day": "Tuesday",
"activities": [
{
"activity": "Freestyle ",
"times": [
{"start":"5:45 AM","end":"6:30 AM"},
{"start":"6:30 AM","end":"7:15 AM"},
{"start":"6:45 PM","end":"7:30 PM"}
]
},
{
"activity": "Open Skate ",
"times": [
{"start":"10:00 AM","end":"5:00 PM"},
{"start":"7:30 PM","end":"9:30 PM"}
]
},
{
"activity": "Patch ",
"times": [
{"start":"10:00 AM","end":"10:30 AM"}
]
}
]
}
]
私の JavaScript - 適切な機能:
function updateSchedule(responseText){
var activitiesDiv = document.getElementById("activities");
var skActivities = JSON.parse(responseText);
var toDay = Date.today().getDayName();
var now = new Date();
var curHour = now.toTimeString('hh:mm tt');
for(var i=0;i<skActivities.length;i++){
var activityDay = skActivities[i];
if(activityDay.day == toDay)
{
var toDaysActivities = activityDay.activities;
for(var j=0;j<toDaysActivities.length;j++){
var toDayActivity = toDaysActivities[j];
var curTimeDayActivities = toDayActivity.times;
for(var k=0;k<curTimeDayActivities.length;k++){
var curTimeDayStartActivity = curTimeDayActivities[k].start;
if(curTimeDayStartActivity >= curHour){
var div = document.createElement("div");
div.innerHTML = toDayActivity.activity + ": " + curTimeDayActivities[k].start;
activitiesDiv.appendChild(div);
}
}
}
}
continue;
}
}
現在、関数は現在の曜日に行われるすべてのクラスとその時間を返します。注: 例外は「11:30 AM オープン スケート」です。返される値は 9 以下のものだけのようです。
繰り返しますが、私の意図は、ユーザーがサイトにアクセスして、現在行われているクラスを確認することです。
注: date.js を利用するためのソリューションが必要ない場合は、それで問題ありません。取り入れようと思っただけです。
任意の推奨事項をいただければ幸いです。