izumikota2014
@izumikota2014

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

在線ビューワーで、10月・11月で特殊ダイヤとほかの月では別設定にしたいです。

解決したいこと

10月・11月で特殊ダイヤを設定しているのに対し、
それ以外の月では、平日運転の列車は平日運転とし、
土休日運転もしかりとしたいです。
ちなみにですが、10月1日→11月30日は便宜上別々のダイヤに仕立ててあります。

発生している問題・エラー

function isHoliday(year, month, day) {
    const date = new Date(year, month - 9, month -10, day);
    const dayOfWeek = date.getDay(); // 曜日を取得
    return dayOfWeek === 0 || dayOfWeek === 6; // 0 は日曜日、6 は土曜日
}
function isWeekday(year, month, day) {
    const dayOfWeek = new Date(year, month - 9, month - 10, day).getDay(); // 曜日を取得
    return dayOfWeek >= 1 && dayOfWeek <= 5; // 1 は月曜日、5 は金曜日
}
function isSunday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() === 0; // 0 は日曜日を表します
}
function isWednesday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() === 3; // 0 は日曜日を表します
}
function isNotWednesday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return !(date.getDay() === 3); // 0 は日曜日を表します
}
function judgeTrainRunningDay(value) {
    if (value === "全日") return true;

    if (value === "平日" && diaDay === DiaType.WEEKDAY) return true;
    if (value === "土曜・休日運休" && diaDay === DiaType.WEEKDAY) return true;
    if (value === "毎日運転" && diaDay === DiaType.WEEKDAY) return true;

    if (value === "休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土・休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土曜・休日運転" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "毎日運転" && diaDay === DiaType.HOLIDAY) return true;

    if (value === "10月10→12日・11月1→3日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
    (diaDay === DiaType.NOV_01)|| (diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03))) return true;
    if (value === "10月10→12日・11月1→3・22→24日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
    (diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03)||
    (diaDay === DiaType.NOV_22)||(diaDay === DiaType.NOV_23)||(diaDay === DiaType.NOV_24))) return true;
この間省略
    if (value === "10月10→12日・11月1→3日の水曜日運転" && (diaDay === DiaType.OCT_10 && isWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWednesday(setYear, 10, 12))||
    (diaDay === DiaType.NOV_01 && isWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWednesday(setYear, 11, 3))) return true;
    if (value === "10月10→12日・11月1→3日の水曜日運転" && ((diaDay === DiaType.OCT_10 && isNotWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isNotWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isNotWednesday(setYear, 10, 12))||
    (diaDay === DiaType.NOV_01 && isNotWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isNotWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isNotWednesday(setYear, 11, 3)))) return true;    // 2月17日が日曜日であるかを確認
    if (value === "10月1→3日・11月25→30日運転" && (diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
    (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 12))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
    (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||(diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30))) return true;
    if (value === "10月1→3日・11月25→30日運転" && (diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
    (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 12))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
    (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||(diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30))) return true;
    if (value === "10月1→7日平日運転" && ((diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
    (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7)) return true;

としておりますが、なぜか、平日は表示してくれないし、


function isWeekday(year, month, day) {
    const dayOfWeek = new Date(year, month - 9, month - 10, day).getDay(); // 曜日を取得
    return dayOfWeek >= 1 && dayOfWeek <= 5; // 1 は月曜日、5 は金曜日
}

も作動せずです。
スクリーンショット 2024-06-05 163528.png

該当するソースコード

javascript

例)

def greet
  puts Hello World
end

自分で試したこと

チャットgptや、gemini、リートンで試しましたがもうお手上げです。
ちなみにテラテイルでは、もう、出してもだれにもあいてにされなくなりまし
元ネタは
http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html
です。

0

7Answer

自分も今回の質問者が 別ID やあちこちのサイト(Teratail, OKWAVE 等)で関連する質問をしている姿を見ていますが、質問者はプログラミングに興味があるわけではなく、あくまで列車の在線ビューワーとやらを作るのが目的なんだろう…というのがにじみ出ています。
そのため質問もプログラムを書く人目線になっておらず、要領を得ない質問になっているのだと思います。

「ChatGPTに聞いたけど解決しない」とありますが、ここで別の方が既に指摘していることも含めてそれなりに妥当な回答を返してくれる気がします。(長くなるので概要のみ抜粋)

  • new Date(year, month - X, month - Y, day) の間違いを修正する
  • isWeekdaynew Date 計算を修正
  • judgeTrainRunningDay の条件式のカッコ抜けを修正
  • isNotWednesday の矛盾を解消
  • 10月1→3日・11月25→30日運転 の重複を削除

同じく、コードについてではなく「質問の仕方」について ChatGPT に添削を依頼すると以下のような回答例が出てきますので、参考にしてみてください。(こちらも概要のみ抜粋)

質問の仕方を改善するために以下を意識する:

  • 「期待する動作」と「実際の動作」の違いを明確に書く
  • デバッグの試行結果を書き、仮説を示す
  • 「バグの特定」だけか「コードの改善提案」も欲しいのか明確にする
  • 関係ないコードを省略し、重要な部分にコメントをつける
  • 最初に「質問の概要」を1文で説明する

プログラムは書いた通りにしか動きませんが、まずは「日本語でやるべき一連の作業や手続き」を説明できるようにしてください (フローチャートを使ってもよし)。これができていないと (慣れた人であっても) 期待する通りのプログラムを書くのは難しいです。
今回の例なら特殊ダイヤとやらがどのように決まるのかが一切説明されていません。

うまくいかない時はプログラムを小さく始めてください。分量が増えれば増えるほど、全体を見通すのが難しくなります。
今回の例なら、表示云々はおいておいて、「日時を指定したらダイヤの種類を返す関数」だけとかまで絞り込みます。

3Like

やりたいことが読み取れないのでコード全部は読んでいませんが、以下に問題がありそうです。

function isWeekday(year, month, day) {
    const dayOfWeek = new Date(year, month - 9, month - 10, day).getDay(); // 曜日を取得

Date コンストラクタの第3引数には年月日の日を与えるべきですが、 month - 10 を与えています。これでは正しい日付になりません。月の値を month - 9 のようにマイナス9しているのも変です。

1Like

Comments

  1. @izumikota2014

    Questioner

    では、どのような記述が推奨されますか。
    修正案をご提示ください。

  2. この関数だけについていえば(つまり平日か土日か判定するならば)以下のようにするのが正しいです。

    // 関数が受け取る month は1〜12の整数とする。
    // JS の Date は月を0〜11で扱うので混在させないこと。
    function isWeekday(year, month, day) {
        const dayOfWeek = new Date(year, month - 1, day).getDay();
        return dayOfWeek >= 1 && dayOfWeek <= 5;
    }
    

    ただし、他のコメント欄でも指摘されていますが、全体として「今現在の挙動」と「あなたが正しいと考える挙動」が具体的に説明されていないので、直した結果があなたの期待通りかは知りません。

  3. @izumikota2014

    Questioner

    あまり長文になると、読まれる方が疲れてしまうので、控えていましたが、
    逆に今度は説明不足だという風なご指摘を賜ったので、
    勝手ながら長文を流させていただきますね。

    var timeTable = new Array();
    
    //列車データの配列のキーの集合
    var timeTableArrayKey = new Array();
    
    //設定時刻
    var setSecondSum = 0;
    
    //自動リアルタイム更新設定
    var realtimeUpdate = true;
    
    var directionNameAry = ["下り", "上り"];
    
    //日付変更の基準
    var dayChangeTime = 3 * 3600 + 0 * 60;
    
    //始発・終着駅での停留時間
    var turningSecond = 1 * 30;
    
    function main()
    {
    	//現在時刻を1秒ごとに更新して表示する
    	nowTimeDisplay();
    	judgeDiaDay(); //今日が平日ダイヤか休日ダイヤか
    	setInterval("nowTimeDisplay()",1000);
    	
    	//時刻表データを取得、整える
    	getTimeTable();
    	
    	//現在日時の取得	
    
    	//路線図を描く
    	drawRouteMap();
    	adjustRouteMap();
    	
    	
    	//最初に列車を描くスペースを作っておく
    	makeDrawTrainSpace();
    	
    	
    	//駅から発車する列車の時刻を取得する
    	//getStationTimetable(34);
    	
    	
    	//設定時刻を12時に設定
    	//setSecondSum = 12 * 60 * 60;
    	//設定時刻を表示
    	//document.getElementById("setDateDisplaySpan").innerHTML = "設定日時 " +digitAdjuster(secondToHour(setSecondSum), " ")+":"+digitAdjuster(secondToMinute(setSecondSum), "0")+":"+digitAdjuster(secondToSecond(setSecondSum), "0");	
    	
    	//各列車の在線位置を割り出す
    	//getTrainPosition();
    	
    	//路線図に列車を配置していく
    	//drawTrain();
    	
    	//リアルタイムで表示更新する
    	changeUpdateInterval();
    	
    	//表示枠をウインドウの大きさに合わせる
    	setDisplayArea();
    }
    
    //基本となる枠組のHTMLを記述する
    function writeBasicHTMLSet()
    {
    	var out = "";
    	out += "";
    	out += "";
    	out += "";
    	
    	out += "<form name='form1'>";
    	
    	out += "";
    	
    	
    	
    	out += "";
    	out += "";
    	out += "";
    	
    	//<img src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/loading.gif' alt='読み込み中' />読み込み中です</span>
    	
    	out += "<div style='position:relative;'>";
    	
    	//マップ  背景色は昔は 9cf
    	out += "  <div id='drawAreaDiv' style='width:1100px; height:450px; background-color:#aec8fc; overflow-y:hidden; overflow-x:scroll; border:solid 1px #000; position:relative; z-index:1 ;' >";
    	out += "    <div id='routeMapDiv' style='position:relative;'></div>";
    	out += "    <div id='trainMappingDiv' style='position:relative;'></div>";
    	out += "  </div>";
    	
    	
    	
    	//左上:現在時刻表示
    	out += "  <div style='position:absolute; top:15px; left:10px; font-size:100%; z-index:3; '>";
    	out += "    <span id='nowDateDisplaySpan' style='position:relative;'></span>";
    	out += "    <span id='setDateDisplaySpan' style='position:relative; color:#f00; '></span> "; 
    	 
    	out += " ";
    	
    	out += "<select size='1' name='updateIntervalSelect' style='font-size:16px;' onChange='changeUpdateInterval();'>";
    	out += "<option value='1'>1秒間隔</option>";
    	out += "<option value='2'>2秒間隔</option>";
    	out += "<option value='3'>3秒間隔</option>";
    	out += "<option value='5' selected>5秒間隔</option>";
    	out += "<option value='10'>10秒間隔</option>";
    	out += "<option value='15'>15秒間隔</option>";
    	out += "<option value='20'>20秒間隔</option>";
    	out += "<option value='25'>25秒間隔</option>";
    	out += "<option value='30'>30秒間隔</option>";
    	out += "<option value='45'>45秒間隔</option>";
    	out += "<option value='60'>60秒間隔</option>";
    	out += "</select>";
    	out += "で更新";
    	
    
    	
    	out += "  </div>";
    	
    	//右上:拡大・縮小ボタン
    	out += "  <div id='expansionButtonDiv' style='position:absolute; top:15px; left:600px; font-size:100%; z-index:3; '>";
    	out += "    <span class='buttonClass' onclick='adjustWidthScale(1.1); adjustRouteMap(); drawTrain();' ><img src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/ecalic039_001.png' alt='' />&nbsp;拡大</span>&nbsp;";
    	out += "    &nbsp;";
    	out += "    <span class='buttonClass' onclick='adjustWidthScale(0.909090909); adjustRouteMap(); drawTrain();' ><img src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/ecalic039_002.png' alt='' />&nbsp;縮小</span>&nbsp;";
    	out += "  </div>";
    	
    	
    	//左下1:
    	out += "  <div id='leftBottomButtonDiv' style='position:absolute; top:410px; left:10px; font-size:100%; z-index:3; '>";
    	out += "   <span id='' class='buttonClass' onclick='updateTimeAdjustDialog()'>時刻調整<span style='font-size:50%;'> ▼</span></span>";
    	out += "  </div>";
    	
    	//時刻微調整ダイアログ
    	out += "  <div id='timeAdjustDialogDiv' style='position:absolute; top:399px; left:-1000px; font-size:100%; z-index:3; background-color:#fff; border: 1px solid #000; padding:10px; '>";
    	out += " <span id='' class='buttonClass' onclick='updateTimeAdjustDialog()'>時刻調整<span style='font-size:50%;'> ▲</span></span><br /><br />";
    	out += "<span id='realTimeModeStatusDiv' class='buttonClass' onclick='timeButtonInterfaceUpdate(true); changeUpdateInterval(); '> リアルタイム表示中 </span><br /><br />";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(-3600)' >1時間前</span> ";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(-900)' >15分前</span> ";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(-60)' >1分前</span> ";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(-5)' >5秒前</span> ";
    	out += "<br /><br />";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(5)' >5秒後</span> ";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(60)' >1分後</span> ";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(900)' >15分後</span> ";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); addSetTime(3600)' >1時間後</span> <br /><br />";
    	out += "<span class='buttonClass' onclick='timeButtonInterfaceUpdate(false); animetionDialog(); ' id='animeButton' >アニメーション</span> ";
    	out += "<br />";
    	
    	out += "  </div>";
    
    	
    	
    	
    	//左下2:
    	out += "  <div id='leftBottomButtonDiv2' style='position:absolute; top:410px; left:350px; font-size:100%; z-index:3; '>";
    	out += "    <span id='mainRemainTrainCountSpan' class='buttonClass' onclick='updateRemainTrainCountDialog()'></span>";
    	out += "  </div>";
    	
    	//在線本数詳細表示ダイアログ
    	out += "  <div id='detailRemainTrainCountDialogDiv' style='position:absolute; top:399px; left:-500px; font-size:100%; z-index:3; background-color:#fff; border: 1px solid #000; padding:10px; '>";
    	out += "  </div>";
    	
    	
    	
    	//右下:平日土休日ダイヤ切り替えボタン
    	out += "  <div id='rigntBottomButtonDiv' style='position:absolute; top:410px; left:10px; font-size:100%; z-index:3; '>";
    	out += "    <span id='todayDiaDaySpan' style='position:relative;'></span>";
    	out += "    &nbsp;";
    	out += "    <span class='buttonClass' onclick='changeDiaType()' >切り替え</span>";
    	out += "  </div>";
    	
    	
    	
    	
    	
    	
    	out += "</div>";
    	
    	
    	
    	//下の駅時刻表
    	out += "<div id='staTimetableTimeDiv' style='position:relative; height:300px; '>";
    	out += "<div id='staTimetableTimeTitle0Div' style='position:absolute; left:0px; width:450px; text-align:center; ' ></div>";
    	out += "<div id='staTimetableTimeTitle1Div' style='position:absolute; left:500px; width:450px; text-align:center; ' ></div>";
    	out += "<div id='staTimetableTime0Div' style='position:absolute; top:20px; left:0px; width:450px; height:250px; font-size:14px; overflow:scroll; border:solid 1px #000; ' >駅名をクリックすると、時刻表が表示されます。</div>";
    	out += "<div id='staTimetableTime1Div' style='position:absolute; top:20px; left:500px; width:450px; height:250px; font-size:14px; overflow:scroll; border:solid 1px #000; ' ></div>";
    
    	out += "</form>";
    	out += "</div>";
    	
    	document.write(out);
    }
    
    timeAdjustDialogFlag = false;
    //時刻微調整のためのダイアログを表示させる/消す
    function updateTimeAdjustDialog()
    {
    	if(!timeAdjustDialogFlag)
    	{
    		document.getElementById("timeAdjustDialogDiv").style.left = "20px";
    		timeAdjustDialogFlag = true;
    	}
    	else
    	{
    		document.getElementById("timeAdjustDialogDiv").style.left = "-1000px";
    		timeAdjustDialogFlag = false;
    	}
    }
    
    remainTrainCountDialogFlag = false;
    //列車詳細在線本数ダイアログを表示させる/消す
    function updateRemainTrainCountDialog()
    {
    	if(!remainTrainCountDialogFlag)
    	{
    		document.getElementById("detailRemainTrainCountDialogDiv").style.left = "340px";
    		remainTrainCountDialogFlag = true;
    	}
    	else
    	{
    		document.getElementById("detailRemainTrainCountDialogDiv").style.left = "-1000px";
    		remainTrainCountDialogFlag = false;
    	}
    }
    
    //時刻表データを取得、整える
    function getTimeTable() {	
        var i = 0;
        for (i = 0; i < trainBasicData.length; i++) {
            var trainNum = trainBasicData[i][0]; // 列車番号
            var runningDay = trainBasicData[i][1]; // 運転日
            var trainType = trainBasicData[i][2]; // 列車種別
    		
            // 配列のキー
            var arrayKey = trainNum + "_" + runningDay + "_" + trainType;
            // 配列のキーを保存しておく
            timeTableArrayKey[i] = arrayKey;
    		
            timeTable[arrayKey] = new Array();
            timeTable[arrayKey]["列車番号"] = trainBasicData[i][0];
            timeTable[arrayKey]["運転日"] = trainBasicData[i][1];
            timeTable[arrayKey]["種別"] = trainBasicData[i][2];
            timeTable[arrayKey]["列車名"] = trainBasicData[i][3];
            timeTable[arrayKey]["列車名(号数)"] = trainBasicData[i][4];
            timeTable[arrayKey]["方向"] = trainBasicData[i][5];
            timeTable[arrayKey]["始発駅"] = trainBasicData[i][6];
            timeTable[arrayKey]["行先"] = trainBasicData[i][7];
            timeTable[arrayKey]["始発駅発車時刻"] = HHMMtoSecond(trainBasicData[i][8]);
            timeTable[arrayKey]["終着駅発車時刻"] = HHMMtoSecond(trainBasicData[i][9]);
    		
            // 列車ごとに発着時刻の揺らぎを乱数で決める 0〜25の範囲で5秒刻みで
            var timeFluctuation = Math.floor(Math.random() * 5) * 5;
    
            timeTable[arrayKey]["駅時刻"] = new Array();
            var j = 0;
    for (j = 0; j < stationList.length; j++) {
        timeTable[arrayKey]["駅時刻"][j] = new Array();
    
        // 対象外の駅の場合はスキップ
        if (trainTimeData[i][j][0] < 0 && trainTimeData[i][j][1] < 0) {
            continue;
        }
    
        // 着時刻
        var arrivalTime = trainTimeData[i][j][0];
        // 発時刻
        var departureTime = trainTimeData[i][j][1];
    
        // 着時刻と発時刻を秒換算する
        if (arrivalTime >= 0) arrivalTime = HHMMtoSecond(arrivalTime);
        if (departureTime >= 0) departureTime = HHMMtoSecond(departureTime);
    
        // 3時より前の場合は、前日扱いにする
        if (0 <= arrivalTime && arrivalTime < dayChangeTime) arrivalTime += 24 * 60 * 60;
        if (0 <= departureTime && departureTime < dayChangeTime) departureTime += 24 * 60 * 60;
    
        // 着と発が同じ場合
        if (arrivalTime === departureTime) {
            timeTable[arrayKey]["駅時刻"][j]["着"] = arrivalTime;
            timeTable[arrayKey]["駅時刻"][j]["発"] = departureTime + 30; // ここでは乱数を加えない
        }
        // 発と着が違う場合
        else if (arrivalTime >= 0 && departureTime >= 0) {
            timeTable[arrayKey]["駅時刻"][j]["着"] = arrivalTime + 30; // ここでも乱数を加えない
            timeTable[arrayKey]["駅時刻"][j]["発"] = departureTime;
            
            // 時刻が重なっている場合、乱数を加える
            if (timeTable[arrayKey]["駅時刻"][j]["着"] === timeTable[arrayKey]["駅時刻"][j]["発"]) {
                timeTable[arrayKey]["駅時刻"][j]["発"] += Math.floor(Math.random() * 5) * 5; // +方向に乱数を加える
            }
        }
        // 発のみの場合
        else if (arrivalTime < 0 && departureTime >= 0) {
            timeTable[arrayKey]["駅時刻"][j]["発"] = departureTime + 30 / 2; // ここでも乱数を加えない
            timeTable[arrayKey]["駅時刻"][j]["着"] = departureTime + 30 / 2 - turningSecond;
        }
        // 着のみの場合
        else if (arrivalTime >= 0 && departureTime < 0) {
            timeTable[arrayKey]["駅時刻"][j]["着"] = arrivalTime + 30 / 2; // ここでも乱数を加えない
            timeTable[arrayKey]["駅時刻"][j]["発"] = arrivalTime + 30 / 2 + turningSecond;
        }
    
        // 発時刻が未設定の場合、着時刻に30秒と揺らぎを加えた値を設定
        if (timeTable[arrayKey]["駅時刻"][j]["発"] === undefined && timeTable[arrayKey]["駅時刻"][j]["着"] !== undefined) {
            timeTable[arrayKey]["駅時刻"][j]["発"] = timeTable[arrayKey]["駅時刻"][j]["着"] - 30; // マイナス方向
        }
    
        // のりば
        timeTable[arrayKey]["駅時刻"][j]["のりば"] = trainTimeData[i][j][2];
    }
    
    	
            // 通過駅の各駅の通過時刻を推定する
            if (timeTable[arrayKey]["方向"] == "下り") {
                j = 0;
            } else {
                j = stationList.length - 1;
            }
    		
            var passingStartStationNum = 0;
            var passingEndStationNum = 0;
            var passingFlag = false;
            while (true) {
                var nowStationNum = j;
                var nextStationNum = (timeTable[arrayKey]["方向"] == "下り") ? j + 1 : j - 1;
    
                // 停車駅→通過駅の場合
                if (trainTimeData[i][nowStationNum][1] != -2 && trainTimeData[i][nextStationNum][0] == -2) {
                    passingStartStationNum = nowStationNum;
                    passingFlag = true;
                }
                // 通過駅→停車駅の場合
                else if (passingFlag && trainTimeData[i][nowStationNum][1] == -2 && trainTimeData[i][nextStationNum][0] != -2) {
                    passingEndStationNum = nextStationNum;
                    var passingDistance = getDistance(passingStartStationNum, passingEndStationNum);
                    var passingTimeSum = timeTable[arrayKey]["駅時刻"][passingEndStationNum]["着"] - timeTable[arrayKey]["駅時刻"][passingStartStationNum]["発"];
                    var k = (timeTable[arrayKey]["方向"] == "下り") ? passingStartStationNum + 1 : passingStartStationNum - 1;
    
                    while (true) {
                        var d = getDistance(passingStartStationNum, k);
                        var ratio = d / passingDistance;
                        var passingTime = timeTable[arrayKey]["駅時刻"][passingStartStationNum]["発"] + Math.floor(passingTimeSum * ratio);
    					
                        timeTable[arrayKey]["駅時刻"][k]["着"] = passingTime;
                        timeTable[arrayKey]["駅時刻"][k]["発"] = passingTime;
    					
                        if (timeTable[arrayKey]["方向"] == "下り") k++;
                        else k--;
    					
                        if ((timeTable[arrayKey]["方向"] == "下り" && k > passingEndStationNum - 1) || 
                            (timeTable[arrayKey]["方向"] == "上り" && k < passingEndStationNum + 1)) {
                            break;
                        }
                    }
                }
    
                if (timeTable[arrayKey]["方向"] == "下り") j++;
                else j--;
    			
                if ((timeTable[arrayKey]["方向"] == "下り" && j > stationList.length - 1 - 1) ||
                    (timeTable[arrayKey]["方向"] == "上り" && j < 0 + 1)) {
                    break;
                }
            }
        }
    
        // 3時になるまでは前日として扱うように
        // midnightSpecialTime();
    }
    
    
    /*
    //3時になるまでは前日として扱うように
    function midnightSpecialTime()
    {
    	var i=0;
    	var j=0;
    	for(i=0 ; i<timeTableArrayKey.length ; i++)
    	{		
    		arrayKey = timeTableArrayKey[i];
    		
    		for(j=0 ; j<stationList.length ; j++)
    		{
    			
    			
    			//データの確認
    			if(arrayKey == "529C_平日")
    				alert(stationList[j]+"駅 "+timeTable[arrayKey]["駅時刻"][stationList[j]]["着"]+" / "+timeTable[arrayKey]["駅時刻"][stationList[j]]["発"]);
    		}
    	}
    }
    */
    	
    
    
    
    //現在時刻を取得・表示する
    function nowTimeDisplay()
    {
    	nowDateSet = new Date();
    	nowYear = nowDateSet.getYear(); //年
    	nowMonth = nowDateSet.getMonth() + 1; //月
    	nowDate = nowDateSet.getDate(); //日
    	nowDay = nowDateSet.getDay(); //曜日
    	nowHour = nowDateSet.getHours(); //時
    	nowMinute = nowDateSet.getMinutes(); //分
    	nowSecond = nowDateSet.getSeconds(); //秒
    	nowMilliSecond = nowDateSet.getMilliseconds(); //ミリ秒
    	
    	if(nowYear < 2000)  nowYear += 1900; //年の補正、1900プラスしとかないといけない場合があるため
    	
    	//秒換算を計算
    	//setSecondSum = HHMMSSToSecond(nowHour, nowMinute, nowSecond);
    	
    	//3:00:00なら、ダイヤ切り替えのためページ再読み込み
    	if(nowSecond == 0)
    	{
    		if(HHMMSSToSecond(nowHour, nowMinute, nowSecond) == dayChangeTime)
    			location.reload();
    	}
    	
    	
    	//現在時刻を表示
    	if(!realtimeUpdate)
    		var spanTag = "<span id='nowDateTimeSpan' style='text-decoration:line-through;'>";
    	else
    		var spanTag = "<span id='nowDateTimeSpan'>";
    	
    	//現在時刻表示欄が存在すれば、表示させる
    	if(document.getElementById("nowDateDisplaySpan") != null)
    		document.getElementById("nowDateDisplaySpan").innerHTML = " " + nowYear+"/"+nowMonth+"/"+nowDate+"("+numToYobi[nowDay]+") "+spanTag+digitAdjuster(nowHour, " ")+":"+digitAdjuster(nowMinute, "0")+":"+digitAdjuster(nowSecond, "0"+"</span>");
    	
    }
    
    //現在時刻に設定する(リアルタイム設定)
    function setNowTime()
    {
    	//秒換算して、設定時刻を変更し、表示を反映させる
    	setNewTime(HHMMSSToSecond(nowHour, nowMinute, nowSecond));
    	
    	//路線図に列車を配置していく
    	drawTrain();
    }
    
    
    
    //リアルタイムモードかどうかで表示インタフェースを変更する
    function timeButtonInterfaceUpdate(hikisu)
    {
    	//引数がtrueなら、リアルタイムモードのインタフェースに
    	if(hikisu)
    	{
    		realtimeUpdate = true;
    		document.getElementById("realTimeModeStatusDiv").innerHTML = " リアルタイム表示中 ";
    		//ドロップダウンリストの有効化
    		document.form1.updateIntervalSelect.disabled = false;
    	}
    	else
    	{
    		realtimeUpdate = false;
    		document.getElementById("realTimeModeStatusDiv").innerHTML = "リアルタイム表示にする";
    		//ドロップダウンリストの無効化
    		document.form1.updateIntervalSelect.disabled = true;
    		
    		//もしタイマーが事前にかかっていたら、止める
    		clearInterval(updateIntervalTimer);
    	}
    }
    
    var animeInterval;
    var animeStatus = false;
    //アニメーション表示する
    function animetionDialog()
    {
    	clearInterval(animeInterval);
    	
    	//アニメ中じゃなかったら
    	if(!animeStatus)
    	{
    		animeStatus = true;
    		document.getElementById("animeButton").innerHTML = "アニメーションをやめる";
    		animeInterval = setInterval('addSetTime(10)', 16);
    	}
    	//アニメ中だったら
    	else
    	{
    		animeStatus = false;
    		document.getElementById("animeButton").innerHTML = "アニメーション";
    	}
    	
    
    	/*
    	if(window.confirm("注意:\nアニメーション表示は高負荷な処理で、お使いの機器(CPU)にそれなりの高い処理能力が必要とされます。\n性能のあまり高くないパソコンや古いパソコン、スマートフォン、携帯電話等の場合、処理に耐えられずにフリーズ、アプリの強制終了、それにより機器にダメージを与える場合があります。\n性能の高いパソコン等であっても、場合によっては処理が遅くなることもあります。\n\nアニメーション表示をしますか?"))
    	{
    		alert("アニメーション表示をやめたい場合は、ページを再読み込みしてください。")
    		setInterval('addSetTime(10)', 16);
    	}
    	 */
    }
    
    //設定時刻に何秒か足して、再描画する
    function addSetTime(value)
    {
    	var secondSum = setSecondSum + value;
    	if(secondSum >= 24*60*60)
    		secondSum -= 24*60*60;
    	else if(secondSum < 0 )
    		secondSum += 24*60*60;
    	
    	setNewTime(secondSum);
    	
    	//路線図に列車を配置していく
    	drawTrain();
    }
    
    //設定時刻を変更し、表示を反映させる
    function setNewTime(value)
    {
    	setSecondSum = value;
    	
    	//3時までなら、前日扱いにする
    	if(setSecondSum < dayChangeTime)
    		setSecondSum += 24 * 60 * 60;
    	
    	//設定時刻を表示
    	if(!realtimeUpdate)
    	{
    		if(document.getElementById("setDateDisplaySpan") != null)
    			document.getElementById("setDateDisplaySpan").innerHTML = "" +digitAdjuster(secondToHour(setSecondSum), " ")+":"+digitAdjuster(secondToMinute(setSecondSum), "0")+":"+digitAdjuster(secondToSecond(setSecondSum), "0")+"を表示中";
    		if(document.getElementById("nowDateTimeSpan") != null)
    			document.getElementById("nowDateTimeSpan").style.textDecoration = "line-through";
    	}
    	else
    	{
    		if(document.getElementById("setDateDisplaySpan") != null)
    			document.getElementById("setDateDisplaySpan").innerHTML = "";
    		if(document.getElementById("nowDateTimeSpan") != null)
    			document.getElementById("nowDateTimeSpan").style.textDecoration = "none";
    	}
    	
    	//各列車の在線位置を割り出す
    	getTrainPosition();
    
    }
    
    //数字を与えると曜日(漢字)に変換
    numToYobi = new Array("日","月","火","水","木","金","土");
    
    //桁数が1ならば、十の位にスペースや0をを付ける、
    //「9」→「09」 や 「9」→「 9」など
    //引数num が10以下なら その数の先頭にaddString をつける
    function digitAdjuster(num, addString)
    {
    	//1桁なら手前に文字を付けて戻り値で返す
    	if(num < 10)
    		return addString + num;
    	else
    		return num;
    }
    
    
    
    //駅での停車時間プラスマイナス何秒は停車と見なされるのか
    var stationStopSpareTime = 0;
    
    
    
    //各列車の在線位置を割り出す
    function getTrainPosition()
    {
    	//配列の中身をリセット
    	trainExistData = new Array();
    	trainExistCount = 0;
    		
    	var i=0;
    	for(i=0 ; i<trainBasicData.length ; i++)
    	{		
    		arrayKey = timeTableArrayKey[i];
    
    		//運転日が一致する場合のみ続ける
    		//if(timeTable[arrayKey]["運転日"] != "平日" && timeTable[arrayKey]["運転日"] != "全日")
    		if(!judgeTrainRunningDay(timeTable[arrayKey]["運転日"]))
    			continue;
    		
    		/*
    		//始発駅発車時刻と終着駅到着時刻の間以外の場合は処理をスキップするようにする
    		if(timeTable[arrayKey]["始発駅発車時刻"] > setSecondSum || setSecondSum > timeTable[arrayKey]["終着駅発車時刻"])
    		{
    			//alert("とばす 現在時刻"+setSecondSum+" "+timeTable[arrayKey]["始発駅発車時刻"]+"〜"+timeTable[arrayKey]["終着駅発車時刻"])
    			continue;
    		}
    		 */
    		
    		
    		//下りの場合は米原から姫路へ
    		//上りの場合は姫路から米原へ
    		//初期値
    		if(timeTable[arrayKey]["方向"] == "下り")
    			j = 0;
    		else
    			j = stationList.length - 1;
    		
    		while(true)
    		{
    			//if(arrayKey == "2119G_全日")
    				//alert(arrayKey+"列車 "+timeTable[arrayKey]["方向"]+" "+stationList[j]+"駅 "+trainTimeData[i][j][0]+" "+trainTimeData[i][j][1]+" "+trainTimeData[i][j][2]);
    			
    			//対象外の駅の場合は以下の処理はスキップするようにする
    			if(trainTimeData[i][j][0] != -1 || trainTimeData[i][j][1] != -1)
    			{
    				//今見ている駅
    				var nowStationNum = j;
    				
    				//次に進む駅
    				if(timeTable[arrayKey]["方向"] == "下り")
    					nextStationNum = j + 1;
    				else
    					nextStationNum = j - 1;
    				
    				//if(arrayKey == "2119G_全日")
    					//alert("now: "+setSecondSum+"  "+arrayKey+"列車 "+stationList[nowStationNum]+"  "+timeTable[arrayKey]["駅時刻"][stationList[nowStationNum]]["着"]+"/"+timeTable[arrayKey]["駅時刻"][stationList[nowStationNum]]["発"])
    				
    				//駅に停車中の列車が見つかったら
    				if(timeTable[arrayKey]["駅時刻"][nowStationNum]["着"] - stationStopSpareTime <= setSecondSum && timeTable[arrayKey]["駅時刻"][nowStationNum]["発"] + stationStopSpareTime > setSecondSum)
    				{
    					//列車の在線状況を記録
    					recordTrainExistData(arrayKey, nowStationNum, -1);
    					
    					//if(arrayKey == "2127G_全日")
    						//alert(timeTable[arrayKey]["列車番号"] +" "+stationList[j]+"駅 "+secondToHHMMSS(timeTable[arrayKey]["駅時刻"][stationList[j]]["着"])+"~"+secondToHHMMSS(timeTable[arrayKey]["駅時刻"][stationList[j]]["発"])+" 停車中");
    				}
    				
    				//駅間走行中の判定は次の駅の分まで見るので、配列外を参照してしまわないようにここで止める
    				if(nextStationNum < 0 || nextStationNum > stationList.length - 1 )
    					break;
    								
    				//駅間走行中の列車が見つかったら
    				//alert(stationList[j]);
    				
    				//if(arrayKey == "2127G_全日")
    					//alert(stationList[nowStationNum]+" "+timeTable[arrayKey]["駅時刻"][stationList[nowStationNum]]["発"] +"+"+ stationStopSpareTime +"<="+ setSecondSum +"&&"+ timeTable[arrayKey]["駅時刻"][stationList[nextStationNum]]["着"] +"-"+ stationStopSpareTime +">"+ setSecondSum)
    
    				if(timeTable[arrayKey]["駅時刻"][nowStationNum]["発"] + stationStopSpareTime <= setSecondSum && timeTable[arrayKey]["駅時刻"][nextStationNum]["着"] - stationStopSpareTime > setSecondSum)
    				{
    					//駅発車〜次駅までにかかる時間
    					var t1 = timeTable[arrayKey]["駅時刻"][nextStationNum]["着"] - timeTable[arrayKey]["駅時刻"][nowStationNum]["発"];
    					//駅発車〜今現在までの時間
    					var t2 = setSecondSum - timeTable[arrayKey]["駅時刻"][nowStationNum]["発"];
    					var advance = t2 / t1;
    					
    					//列車の在線状況を記録
    					if(timeTable[arrayKey]["方向"] == "下り")
    						recordTrainExistData(arrayKey, nowStationNum, advance);
    					else
    						recordTrainExistData(arrayKey, nextStationNum, advance);
    					
    					//if(arrayKey == "2127G_全日")
    						//alert(timeTable[arrayKey]["列車番号"] +" "+stationList[j]+"駅 "+secondToHHMMSS(timeTable[arrayKey]["駅時刻"][stationList[j]]["発"])+"~"+stationList[j+1]+"駅 "+secondToHHMMSS(timeTable[arrayKey]["駅時刻"][stationList[j+1]]["着"])+" 走行中 "+ advance+"");
    				}
    				
    			}
    			
    
    			//ループを繰り返すたびに実行する処理
    			if(timeTable[arrayKey]["方向"] == "下り")
    				j++;
    			else
    				j--;
    			
    			//ループを抜ける条件
    			if(timeTable[arrayKey]["方向"] == "下り" && j > stationList.length - 1 )
    				break;
    			else if(timeTable[arrayKey]["方向"] == "上り" && j < 0 )
    				break;
    			
    		}
    			
    		
    	}
    	
    }
    
    //列車の在線状況を記録
    function recordTrainExistData(arrayKey1, position, advance)
    {
    	trainExistData[trainExistCount] = new Array();
    	trainExistData[trainExistCount] = [arrayKey1, position, advance];
    	
    	trainExistCount++;
    }
    
    
    var mapStationWidth = 50;
    var mapStationBetweenWidth = 50;
    var lineHeight = 70;
    
    
    
    //路線図を描く
    function drawRouteMap()
    {
    	var text = "";
    	
    	//各駅の白い枠
    	for(i=stationList.length-1 ; i>=0 ; i--)
    	{
    		//駅名
    		text += "<div id='stationFlameDiv"+i+"' style='position:absolute; background-color:#fff; text-align:center; vertical-align:middle; opacity:0.4; filter: alpha(opacity=40); -ms-filter: alpha(opacity=20); zoom:1; '></div>\n";
    	}
    	
    	//線路
    	if(kudariRapidLineData[0])
    		text += "<img id='kudariRapidLineImg' src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/line.png' alt='' style='position:absolute; ' />\n";
    	if(kudariSlowLineData[0])
    		text += "<img id='kudariSlowLineImg' src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/line.png' alt='' style='position:absolute; ' />\n";
    	if(noboriSlowLineData[0])
    		text += "<img id='noboriSlowLineImg' src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/line.png' alt='' style='position:absolute; ' />\n";
    	if(noboriRapidLineData[0])
    		text += "<img id='noboriRapidLineImg' src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/line.png' alt='' style='position:absolute; ' />\n";
    	
    	for(i=stationList.length-1 ; i>=0 ; i--)
    	{
    		//駅名
    		var stationName = stationList[i].substring(0,4);
    		text += "<div id='stationTopDiv"+i+"' class='staNameButtonClass' style='position:absolute; text-align:center; vertical-align:middle; border-bottom: 2px solid #000; border-right: 2px solid #000;' onclick='getStationTimetable("+i+")'>"+stationName+"</div>\n";
    		text += "<div id='stationBottomDiv"+i+"' class='staNameButtonClass' style='position:absolute; text-align:center; vertical-align:middle; border-bottom: 2px solid #000; border-right: 2px solid #000;' onclick='getStationTimetable("+i+")'>"+stationName+"</div>\n";
    	}
    	
    	
    	text += "";
    	text += "";
    	text += "";
    	text += "";
    	text += "";
    	text += "";
    	text += "";
    	
    	
    	document.getElementById("routeMapDiv").innerHTML = text;
    }
    
    
    
    function adjustWidthScale(num)
    {
    	WidthPerKM *= num;
    }
    
    
    function adjustRouteMap()
    {
    	//フォームから値読み込み
    	//var index = document.form1.mapStationWidthSelect.selectedIndex; //選択しているインデックス番号を取得
    	//var name1 = document.form1.mapStationWidthSelect.options[index].value; //そのインデックス番号のvalueの値を取得
    	
    	var name1 = 50; 
    	
    	/*
    	if(ScareFlag == false)
    	{
    		var index = document.form1.mapStationBetweetWidthSelect.selectedIndex; //選択しているインデックス番号を取得
    		WidthPerKM = document.form1.mapStationBetweetWidthSelect.options[index].value; //そのインデックス番号のvalueの値を取得
    	}
    	 */
    	
    	//基本サイズ
    	basicSize = name1;
    	//基本の横幅サイズ
    	basicWidthSize = basicSize * WidthPerKM;
    	
    	mapStationWidth = WidthPerKM;
    	mapStationBetweenWidth = WidthPerKM;
    	
    	//線の間隔
    	lineHeight = name1 * 1.2;
    	
    	//余白
    	offset_x = 50;
    	offset_y = 55;
    	
    	//表示エリアの縦幅を変更
    	document.getElementById("drawAreaDiv").style.height = offset_y + lineHeight * 5 + offset_y + 60 + "px";
    	
    	//駅間の平均距離を求める
    	var aveDistance = getDistance(0, stationList.length-1) / stationList.length-1
    	
    	//駅間の最短距離を求める
    	var minDistance = 1000000;
    	for(i=0 ; i<stationList.length-1 ; i++)
    	{
    		var d = getDistance(i, i+1);
    		if(d < minDistance)
    			minDistance = d;
    	}
    	
    	//alert("最小は"+d);
    	
    
    	
    	
    	//////各駅のdiv
    	//駅の薄い白い部分の横幅
    	var stationWhiteAreaWidth = Math.ceil(WidthPerKM * 0.3);
    	for(i=0 ; i<stationList.length ; i++)
    	{
    		//その駅の起点からの距離 単位:1km
    		var stationDistance = getDistance(0, i);
    		
    		//駅名divの横幅
    		//var stationNameDivWidth = WidthPerKM * (minDistance + (aveDistance - minDistance) * 0.5 ) * 2;
    		var stationNameDivWidth = WidthPerKM * minDistance;
    		
    		if(stationNameDivWidth < 30)
    			stationNameDivWidth = 30;
    		if(stationNameDivWidth > 70)
    			stationNameDivWidth = 70;
    		
    		//横幅に合わせて駅名表示の文字数を変える
    		if(stationNameDivWidth < 13*3)
    			var stationChar = 2;
    		else if(stationNameDivWidth < 13*4)
    			var stationChar = 3;
    		else if(stationNameDivWidth < 13*5)
    			var stationChar = 4;
    		else if(stationNameDivWidth < 13*6)
    			var stationChar = 5;
    		else
    			var stationChar = 6;
    		
    		var stationName = stationList[i].substring(0,stationChar);
    		
    		
    		//偶数目と奇数目の駅名で上下にずらさせる
    		stationDivPadding = 25;
    		if(i%2 != 0)
    		{
    			//奇数の場合
    			if(i == stationList.length - 1)
    			{
    				//右端の駅の場合
    				if(getDistance(i-1, i) * WidthPerKM < stationNameDivWidth + 2)
    					var setStationDivPadding = stationDivPadding;
    				else
    					var setStationDivPadding = 0;
    			}
    			else
    			{
    				if(getDistance(i-1, i) * WidthPerKM < stationNameDivWidth + 2 || getDistance(i, i+1) * WidthPerKM < stationNameDivWidth + 2)
    					var setStationDivPadding = stationDivPadding;
    				else
    					var setStationDivPadding = 0;
    			}
    		}
    		else
    			var setStationDivPadding = 0;
    		
    		//上の駅名表示
    		var id = "stationTopDiv" + i;
    		document.getElementById(id).style.top = offset_y + setStationDivPadding + "px";
    		document.getElementById(id).style.left = offset_x + stationDistance * WidthPerKM - stationNameDivWidth / 2 + "px";
    		document.getElementById(id).style.width = stationNameDivWidth + "px";
    		document.getElementById(id).style.height = basicSize / 3 + "px";
    		document.getElementById(id).style.fontSize = basicSize / 4.5 + "px";
    		document.getElementById(id).innerHTML = stationName;
    		
    		//下の駅名表示
    		var id = "stationBottomDiv" + i;
    		document.getElementById(id).style.top = (offset_y + stationDivPadding * 2 - setStationDivPadding + stationDivPadding + lineHeight * 4) + "px";
    		document.getElementById(id).style.left = offset_x + stationDistance * WidthPerKM - stationNameDivWidth / 2 + "px";
    		document.getElementById(id).style.width = stationNameDivWidth + "px";
    		document.getElementById(id).style.height = basicSize / 3 + "px";
    		document.getElementById(id).style.fontSize = basicSize / 4.5 + "px";
    		document.getElementById(id).innerHTML = stationName;
    		
    		//駅の白いエリア表示
    		var id = "stationFlameDiv" + i;
    		document.getElementById(id).style.top = offset_y + setStationDivPadding + "px";
    		document.getElementById(id).style.left = offset_x + stationDistance * WidthPerKM - stationWhiteAreaWidth / 2 + "px";
    		document.getElementById(id).style.width = stationWhiteAreaWidth + "px"; //小数点以下は切り上げ
    		document.getElementById(id).style.height = lineHeight * 4.5 + stationDivPadding * 2 - setStationDivPadding * 2 + "px";
    	}
    
    	
    	//線路を描画
    	if(kudariRapidLineData[0])
    	{
    		var id = "kudariRapidLineImg";
    		document.getElementById(id).style.top = (offset_y + stationDivPadding + lineHeight * 1 + 15) + "px";
    		document.getElementById(id).style.left = offset_x + getDistance(0, kudariRapidLineData[1]) * WidthPerKM - stationWhiteAreaWidth * 0.5 + "px";
    		document.getElementById(id).style.width = (getDistance(kudariRapidLineData[1], kudariRapidLineData[2]) * WidthPerKM) + stationWhiteAreaWidth + "px";
    		document.getElementById(id).style.height = 4 + "px";
    	}
    	
    	if(kudariSlowLineData[0])
    	{
    		var id = "kudariSlowLineImg";
    		document.getElementById(id).style.top = (offset_y + stationDivPadding + lineHeight * 2 + 15) + "px";
    		document.getElementById(id).style.left = offset_x + getDistance(0, kudariSlowLineData[1]) * WidthPerKM - stationWhiteAreaWidth * 0.5 + "px";
    		document.getElementById(id).style.width = getDistance(kudariSlowLineData[1], kudariSlowLineData[2]) * WidthPerKM + stationWhiteAreaWidth + "px";
    		document.getElementById(id).style.height = 4 + "px";
    	}
    	
    	if(noboriSlowLineData[0])
    	{
    		var id = "noboriSlowLineImg";
    		document.getElementById(id).style.top = (offset_y + stationDivPadding + lineHeight * 3 + 15) + "px";
    		document.getElementById(id).style.left = offset_x + getDistance(0, noboriSlowLineData[1]) * WidthPerKM - stationWhiteAreaWidth * 0.5 + "px";
    		document.getElementById(id).style.width = getDistance(noboriSlowLineData[1], noboriSlowLineData[2]) * WidthPerKM + stationWhiteAreaWidth + "px";
    		document.getElementById(id).style.height = 4 + "px";
    	}
    	
    	if(noboriRapidLineData[0])
    	{
    		var id = "noboriRapidLineImg";
    		document.getElementById(id).style.top = (offset_y + stationDivPadding + lineHeight * 4 + 15) + "px";
    		document.getElementById(id).style.left = offset_x + getDistance(0, noboriRapidLineData[1]) * WidthPerKM - stationWhiteAreaWidth * 0.5 + "px";
    		document.getElementById(id).style.width = (getDistance(noboriRapidLineData[1], noboriRapidLineData[2]) * WidthPerKM) + stationWhiteAreaWidth + "px";
    		document.getElementById(id).style.height = 4 + "px";
    	}
    	
    	
    }
    
    
    //最初に列車を描くスペースを作っておく
    function makeDrawTrainSpace()
    {
    	var outputHTML = "";
    	var i;
    	for(i = 0 ; i < 200 ; i++)
    	{
    		var imgId = "trainImg"+i;
    		var divId = "trainInfoDiv"+i;
    		var trainNumSpanId = "trainInfoTrainNumSpan"+i;
    		var destinatioSpanId = "trainInfoDestinationSpan"+i;
    		outputHTML += "<img id='"+imgId+"' src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/223.png' alt='' style='position:absolute; ' />\n";
    		outputHTML += "<div id='"+divId+"' style='position:absolute; ' ><span id='"+trainNumSpanId+"'></span><br /><span id='"+destinatioSpanId+"'></span></div>\n";
    	}
    	
    	//書き足す
    	document.getElementById("trainMappingDiv").innerHTML = outputHTML;
    }
    
    
    //路線図に列車を配置していく
    function drawTrain()
    {
    	//alert(typeof(hasshahyoMode));
    	//発車標のページから呼び出されているなら、処理しない
    	if(!(typeof(hasshahyoMode) == "undefined"))
    	{
    		//alert("スキップします");
    		return;
    	}
    	
    	//一旦中身を初期化
    	//document.getElementById("trainMappingDiv").innerHTML = "";
    	
    	//本数をカウントする変数も初期化
    	var existCount = new Array();
    	var i;
    	for(i=0 ; i<trainTypeColor.length ; i++)
    	{
    		existCount[trainTypeColor[i][0]] = 0;
    	}
    	
    	//existCount["普通"] = 0;
    	//existCount["快速"] = 0;
    	//existCount["新快速"] = 0;
    	//existCount["特急"] = 0;
    	
    	
    	for(i = 0 ; i<trainExistData.length ; i++)
    	{
    		var arrayKey = trainExistData[i][0];
    		var imgId = "trainImg"+i;
    		var divId = "trainInfoDiv"+i;
    		var trainNumSpanId = "trainInfoTrainNumSpan"+i;
    		var destinatioSpanId = "trainInfoDestinationSpan"+i;
    		//outputHTML += "<img id='"+imgId+"' src='./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/223.png' alt='' style='position:absolute; ' />\n";
    		
    		
    		var color1 = getTypeColor(timeTable[arrayKey]["種別"], 0);
    		var color2 = getTypeColor(timeTable[arrayKey]["種別"], 1);
    		
    		/////その列車の在線位置(距離)を特定
    		//駅に停車中の場合
    		if(trainExistData[i][2] == "-1")
    		{
    			var trainDistance = getDistance(0, trainExistData[i][1]);
    		}
    		//走行中の場合
    		else
    		{
    			//どれぐらいの割合を通過しきれてるか
    			if(timeTable[arrayKey]["方向"] == "下り")
    			{
    				var advance = trainExistData[i][2];
    				var advanceDinstance = getDistance(trainExistData[i][1], trainExistData[i][1] + 1) * advance;
    			}
    			else if(timeTable[arrayKey]["方向"] == "上り")
    			{
    				var advance = 1 - trainExistData[i][2];
    				var advanceDinstance = getDistance(trainExistData[i][1], trainExistData[i][1] + 1) * advance;
    			}
    			
    			
    			var trainDistance = getDistance(0, trainExistData[i][1]) + advanceDinstance;
    
    		}
    		
    		/*
    		if(arrayKey == "2013G_全日")
    		{
    			alert("2013G在戦中");
    			//alert(trainDistance);	
    		}
    		 */
    		
    		
    		
    		//color1 が背景色
    		//color2 が文字色
    		//列車番号の部分の背景色を設定
    		//列車番号の欄の色を設定
    		document.getElementById(trainNumSpanId).style.backgroundColor = color1;
    		document.getElementById(trainNumSpanId).style.color = color2;
    		
    		
    		//列車番号を頭上に付記
    		document.getElementById(trainNumSpanId).innerHTML = timeTable[arrayKey]["列車番号"];
    		
    		//行き先を付記
    		document.getElementById(destinatioSpanId).innerHTML = timeTable[arrayKey]["行先"];
    		
    		//outputHTML += "<div id='"+divId+"' style='position:absolute; ' ><span style='background-color:" + color1 + "; color:" + color2 + "'>"+timeTable[arrayKey]["列車番号"]+"</span><br />"+timeTable[arrayKey]["行先"]+"</div>\n";
    		
    		document.getElementById(imgId).style.width = 30 + "px";
    		document.getElementById(divId).style.width = 100 + "px";
    		
    		document.getElementById(imgId).style.left = offset_x + trainDistance * WidthPerKM - 30 / 2 + "px";
    		document.getElementById(divId).style.left = offset_x + trainDistance * WidthPerKM - 100 / 2 + "px";
    		
    		document.getElementById(imgId).style.height = 20 + "px";
    		document.getElementById(divId).style.height = 20 + "px";
    		
    		document.getElementById(divId).style.fontSize = basicSize / 4.5 + "px";
    		document.getElementById(divId).style.textAlign = "center";
    		
    		//alert(document.getElementById(imgId).onclick)
    		
    		
    		//上から何番目の線路を走っているか
    		var runningTrack = judgeLineTrack(timeTable[arrayKey]["方向"], timeTable[arrayKey]["種別"], trainDistance);
    
    		document.getElementById(divId).style.top = (offset_y + stationDivPadding + basicSize / 3 + basicSize / 10 + lineHeight * (runningTrack - 1)) + "px";
    		document.getElementById(imgId).style.top = (offset_y + stationDivPadding + basicSize / 3 + basicSize / 10 + lineHeight * (runningTrack - 1) + basicSize / 1.6) + "px";
    		
    		
    		
    		//種別によって表示される画像を変更する
    		if(timeTable[arrayKey]["種別"] == "普通")
    		{
    			document.getElementById(imgId).src = "./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/321.png";
    		}
    		else if(timeTable[arrayKey]["種別"] == "特急")
    		{
    			document.getElementById(imgId).src = "./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/683.png";
    		}
    		else
    		{
    			document.getElementById(imgId).src = "./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/223.png";
    		}
    		
    		//種別ごとに本数をカウント
    		existCount[timeTable[arrayKey]["種別"]]++;
    		
    		
    		
    		///////クリックされた際の処理
    		//var text = "<span onclick=getTrainTimetableInfo('"+arrayKey+"')>" + document.getElementById(imgId).innerHTML + "</span>"
    		//document.getElementById(imgId).innerHTML = text;
    		
    		//var text = "<span onclick=getTrainTimetableInfo('"+arrayKey+"')>" + document.getElementById(divId).innerHTML + "</span>"
    		//document.getElementById(divId).innerHTML = text;
    		
    		//alert(arrayKey+"をうえつけ");
    		
    		//document.getElementById(imgId).onclick = function(){ getTrainTimetableInfo(arrayKey); };
    		//document.getElementById(divId).onclick = function(){ getTrainTimetableInfo(arrayKey); };
    	}
    	
    	
    	
    	
    	
    	
    	//alert(i);
    	//残りはいらないので、無表示にしておく
    	while(i < 200)
    	{
    		var imgId = "trainImg"+i;
    		var divId = "trainInfoDiv"+i;
    		var trainNumSpanId = "trainInfoTrainNumSpan"+i;
    		var destinatioSpanId = "trainInfoDestinationSpan"+i;
    		
    		document.getElementById(trainNumSpanId).innerHTML = "";
    		document.getElementById(destinatioSpanId).innerHTML = "";
    		document.getElementById(imgId).src = "./JR西日本 北陸本線 (米原〜直江津) 列車在線ビューア_files/non.png";
    		
    		i++
    	}
    		
    	//その他の本数をカウント
    	var otherTrainCount = trainExistData.length;
    	
    	for(i=0 ; i<trainTypeColor.length ; i++)
    	{
    		otherTrainCount -= existCount[trainTypeColor[i][0]];
    	}
    
    	//otherTrainCount -= existCount["普通"];
    	//otherTrainCount -= existCount["快速"];
    	
    	var output = "";
    	output += "在線: ";
    	output += trainExistData.length + "本<span style='font-size:50%;'> ▼</span>";
    	
    	//総計のみ表示するDIV
    	document.getElementById("mainRemainTrainCountSpan").innerHTML = output;
    
    	
    	var output = "";
    	output += "<span id='' class='buttonClass' onclick='updateRemainTrainCountDialog()'>";
    	output += "在線: ";
    	output += trainExistData.length + "本<span style='font-size:50%;'> ▲</span></span><br />";
    	output += "<br />";
    	
    	for(i=0 ; i<trainTypeColor.length ; i++)
    	{
    		
    		var typeNameBuff = trainTypeColor[i][0];
    		var typeColor0Buff = trainTypeColor[i][1][0];
    		var typeColor1Buff = trainTypeColor[i][1][1];
    		
    		output += "<span style='color:"+typeColor1Buff+"; background-color:"+typeColor0Buff+";'>"+typeNameBuff+"</span>: ";
    		
    		output += existCount[typeNameBuff] + "本<br />";
    	}
    	output += "その他:"+otherTrainCount+"本<br />";
    	output += "";
    	output += "";
    	
    	//表示してる列車の本数を表示
    	document.getElementById("detailRemainTrainCountDialogDiv").innerHTML = output;
    
    }
    
    
    
    
    //与えられた2駅間の距離を計算
    function getDistance(sta1, sta2)
    {
    	//大→小の順だと都合がわるいので入れ替える
    	if(sta1 > sta2)
    	{
    		var buff = sta1;
    		sta1 = sta2;
    		sta2 = buff;
    	}
    		
    	var distance = 0;
    	
    	var i=0;
    	for(i = sta1 ; i < sta2 ; i++)
    	{
    		distance += betweenDistance[i];
    	}
    	
    	return distance;
    }
    
    var updateIntervalTimer;
    
    //自動更新間隔を変更
    function changeUpdateInterval()
    {
    	var index = document.form1.updateIntervalSelect.selectedIndex; //選択しているインデックス番号を取得
    	var name = document.form1.updateIntervalSelect.options[index].value; //そのインデックス番号のvalueの値を取得
    	
    	var time = name * 1000;
    	
    	//まず最初に再読み込み
    	setNowTime();
    	//もしタイマーが事前にかかっていたら、止める
    	clearInterval(updateIntervalTimer);
    	//新たにタイマーを設定
    	updateIntervalTimer = setInterval("setNowTime()", time);
    }
    
    //ウインドウの大きさに合わせて枠をリアルタイムで変更する
    function setDisplayArea()
    {
    	getWindowSize();
    	
    	//描画エリアの横幅
    	document.getElementById("drawAreaDiv").style.width = windowWidth - 30 + "px";
    	
    	//右上・右下のボタンの位置
    	document.getElementById("expansionButtonDiv").style.left = windowWidth - 0 - 200 + "px";
    	document.getElementById("rigntBottomButtonDiv").style.left = windowWidth - 0 - 260 + "px";
    	
    	//各駅の時刻の欄
    	document.getElementById("staTimetableTimeTitle0Div").style.width = (windowWidth - 30) / 2 - 30 + "px";
    	document.getElementById("staTimetableTimeTitle1Div").style.width = (windowWidth - 30) / 2 - 30 + "px";
    	document.getElementById("staTimetableTime0Div").style.width = (windowWidth - 30) / 2 - 30 + "px";
    	document.getElementById("staTimetableTime1Div").style.width = (windowWidth - 30) / 2 - 30 + "px";
    	
    	document.getElementById("staTimetableTimeTitle0Div").style.left = 0 + "px";
    	document.getElementById("staTimetableTimeTitle1Div").style.left = (windowWidth - 30) / 2 + "px";
    	document.getElementById("staTimetableTime0Div").style.left = 0 + "px";
    	document.getElementById("staTimetableTime1Div").style.left = (windowWidth - 30) / 2 + "px";
    	
    
    }
    
    //ウインドウの横幅の大きさを取得する
    function getWindowSize()
    {
    	browserName = navigator.appName; //ブラウザ名取得
    	if(browserName == "Microsoft Internet Explorer")
    	{
    		//IEの場合
    		windowWidth = document.documentElement.clientWidth;
    		windowHeight = document.documentElement.clientHeight;
    	}
    	else
    	{
    		//IE以外の場合
    		windowWidth = window.innerWidth;
    		windowHeight = window.innerHeight;
    	}
    }
    
    
    //駅から発車する列車の時刻を取得する
    function getStationTimetable(currentStaNum)
    {
    	//alert(currentStaNum);
    	
    	stationTimetableArrayKey = new Array();
    	
    	stationTimetableArrayKey[currentStaNum] = new Array();
    	stationTimetableArrayKey[currentStaNum]["下り"] = new Array();
    	stationTimetableArrayKey[currentStaNum]["上り"] = new Array();
    	
    	var i=0;
    	var trainCount = new Array;
    	trainCount["下り"] = 0;
    	trainCount["上り"] = 0;
    	for(i=0 ; i<trainBasicData.length ; i++)
    	{		
    		arrayKey = timeTableArrayKey[i];
    		
    		//運転日が一致する場合のみ続ける
    		//if(timeTable[arrayKey]["運転日"] != "平日" && timeTable[arrayKey]["運転日"] != "全日")
    		if(!judgeTrainRunningDay(timeTable[arrayKey]["運転日"]))
    			continue;
    		
    		//駅の時刻がちゃんと入力されていて
    		//、かつ終着駅=大阪駅でない場合  && timeTable[arrayKey]["行先"] != stationList[currentStaNum]
    		if(timeTable[arrayKey]["駅時刻"][currentStaNum]["着"] >= 0  )
    		{
    			var direction = timeTable[arrayKey]["方向"];
    			//列車番号+運転日を記録
    			stationTimetableArrayKey[currentStaNum][direction][trainCount[direction]] = arrayKey;
    			
    			//カウント
    			trainCount[direction]++;
    			
    			//alert(arrayKey + " は " + stationList[currentStaNum] + "駅で " + timeTable[arrayKey]["駅時刻"][stationList[currentStaNum]]["着"] + "〜" + timeTable[arrayKey]["駅時刻"][stationList[currentStaNum]]["発"]);
    			//stationTimetableArrayKey[19][trainCount]
    			//trainCount++;
    		}
    	}
    	
    	
    	
    	
    	
    	
    	
    	//alert(stationList[currentStaNum])
    	//alert(stationTimetableArrayKey[currentStaNum]["下り"].length +"本を入れ替えよう");
    	
    	////////発車時刻の順にクイックソートで並び替える
    	var i, j, k;
    	for(i = 0 ; i<directionNameAry.length ; i++)
    	{
    		var currentDirection = directionNameAry[i];
    		
    		var buff = ""; //データを一時的に避難させておくところ
    		
    		for(j=stationTimetableArrayKey[currentStaNum][currentDirection].length-1 ; j>=0 ; j--)
    		{
    			for(k=0 ; k<j ; k++)
    			{
    				//時刻の大小関係が逆だったら、入れ替える
    				//クイックソート
    				//入れ替える対象は
    				var arrayKeyA = stationTimetableArrayKey[currentStaNum][currentDirection][k];
    				var arrayKeyB = stationTimetableArrayKey[currentStaNum][currentDirection][k+1];
    				
    				//alert(arrayKeyA);
    				//alert(arrayKeyB);
    				
    				if(timeTable[arrayKeyA]["駅時刻"][currentStaNum]["発"] > timeTable[arrayKeyB]["駅時刻"][currentStaNum]["発"])
    				{
    					//入れ替える
    					stationTimetableArrayKey[currentStaNum][currentDirection][k] = arrayKeyB;
    					stationTimetableArrayKey[currentStaNum][currentDirection][k+1] = arrayKeyA;
    				}
    			}
    		}
    	}
    	
    	//alert(stationTimetableArrayKey[currentStaNum]["下り"]);
    
    	
    	//alert(stationTimetableArrayKey[currentStaNum]["下り"].length +"本あるよ");
    
    	
    	
    	
    	//////結果をDIVに出力
    	for(i = 0 ; i<directionNameAry.length ; i++)
    	{
    		var currentDirection = directionNameAry[i];
    		var output = "";
    		output += "";
    		output += "";
    		//output += "<table border='0'>";
    		output += "<div>";
    		output += "";
    		output += "";
    		output += "";
    		
    		nextTrainHeight = ""; //次発の列車の縦位置を記録する変数
    		divTop = 0; //1行ごとに20ずつ増やしていく
    		
    		for(j=0 ; j < stationTimetableArrayKey[currentStaNum][currentDirection].length ; j++)
    		{
    			var currentArrayKey = stationTimetableArrayKey[currentStaNum][currentDirection][j];
    			//alert(currentArrayKey);
    			//document.getElementById("staTimetableTimeDiv").innerHTML += i+"本目 "+currentArrayKey+"<br />";
    			//output += "<tr style='white-space:nowrap; height:25px; '>";
    			
    			var bgColor = getTypeColor(timeTable[currentArrayKey]["種別"], 0);
    			var color = getTypeColor(timeTable[currentArrayKey]["種別"], 1);
    			
    			output += "<div style='position:absolute; top:"+divTop+"px; left:0px; width:60px; text-align:center;'><span style='color:"+color+"; background-color:"+bgColor+"'>" + timeTable[currentArrayKey]["列車番号"] + "</span></div>";
    			output += "<div style='position:absolute; top:"+divTop+"px; left:40px; width:120px; text-align:center;'><span style='color:"+color+"; background-color:"+bgColor+"'>" + timeTable[currentArrayKey]["種別"] + "</span></div>";
    			
    			//着時刻と発時刻が異なる場合、つまりその駅に停車する場合
    			if(timeTable[currentArrayKey]["駅時刻"][currentStaNum]["着"] != timeTable[currentArrayKey]["駅時刻"][currentStaNum]["発"])
    			{
    				
    				//着時刻
    				var timeOutput = "";
    				var secondSum = timeTable[currentArrayKey]["駅時刻"][currentStaNum]["着"];
    				timeOutput += digitAdjuster(secondToHour(secondSum), "&nbsp;");
    				timeOutput += ":";
    				timeOutput += digitAdjuster(secondToMinute(secondSum), "0");
    				//timeOutput += "<span style='font-size:70%;'> ";
    				//timeOutput += digitAdjuster(secondToSecond(secondSum), "0");
    				//timeOutput += "</span>";
    				timeOutput += "";
    				
    				output += "<div style='position:absolute; top:"+divTop+"px; left:150px; width:70px; text-align:right;'>" + timeOutput + " <span style='font-size:80%; '>着</span></div>";
    				
    				//発時刻
    				var timeOutput = "";
    				var secondSum = timeTable[currentArrayKey]["駅時刻"][currentStaNum]["発"];
    				timeOutput += digitAdjuster(secondToHour(secondSum), "&nbsp;");
    				timeOutput += ":";
    				timeOutput += digitAdjuster(secondToMinute(secondSum), "0");
    				//timeOutput += "<span style='font-size:70%;'> ";
    				//timeOutput += digitAdjuster(secondToSecond(secondSum), "0");
    				//timeOutput += "</span>";
    				timeOutput += "";
    				
    				output += "<div style='position:absolute; top:"+divTop+"px; left:230px; width:70px; text-align:right;'>" + timeOutput + " <span style='font-size:80%; '>発 </span></div>";
    			}
    			else
    			{
    				//その駅を通過する列車の場合
    				var timeOutput = "";
    				var secondSum = timeTable[currentArrayKey]["駅時刻"][currentStaNum]["発"];
    				timeOutput += digitAdjuster(secondToHour(secondSum), "&nbsp;");
    				timeOutput += ":";
    				timeOutput += digitAdjuster(secondToMinute(secondSum), "0");
    				//timeOutput += "<span style='font-size:70%;'> ";
    				//timeOutput += digitAdjuster(secondToSecond(secondSum), "0");
    				//timeOutput += "</span>";
    				timeOutput += "";
    				
    				//output += "<td colspan='2' style='text-align:center;'>" + timeOutput + " 通過</td>";
    				output += "<div style='position:absolute; top:"+divTop+"px; left:230px; width:70px; text-align:center; color:#aaa; '>" + timeOutput + " <span style='font-size:80%; '>通過</span></div>";
    			}
    			
    			//次発の列車の縦位置を特定する
    			var secondSum = timeTable[currentArrayKey]["駅時刻"][currentStaNum]["発"];
    			if(setSecondSum < secondSum && nextTrainHeight == "")
    				nextTrainHeight = divTop - 20;
    			
    			
    			
    			if(timeTable[currentArrayKey]["行先"] != stationList[currentStaNum])
    			{
    				output += "<div style='position:absolute; top:"+divTop+"px; left:310px; width:150px; '>" + timeTable[currentArrayKey]["行先"] + "<span style='font-size:80%;'> 行</span></div>";
    			}
    			else
    			{
    				output += "<div style='position:absolute; top:"+divTop+"px; left:310px; width:80px; '>当駅止まり</div>";
    			}
    			
    			if(timeTable[currentArrayKey]["駅時刻"][currentStaNum]["のりば"] >= 0)
    				output += "<div style='position:absolute; top:"+divTop+"px; left:390px; width:80px; text-align:right;'>" + timeTable[currentArrayKey]["駅時刻"][currentStaNum]["のりば"] + "<span style='font-size:80%;'> 番線</span></div>";
    			else
    				output += "<td></td>";
    			output += "</tr>\n";
    			
    			divTop+= 20;
    
    			
    		}
    		//output += "</table>";
    		output += "</div>";
    		
    		var idName = "staTimetableTime"+i+"Div";
    		if(document.getElementById(idName) != null)
    			document.getElementById(idName).innerHTML = output;
    		
    		//現在時刻へスクロールする
    		if(document.getElementById(idName) != null)
    			document.getElementById(idName).scrollTop = nextTrainHeight;
    
    		
    		var idName = "staTimetableTimeTitle"+i+"Div";
    		if(document.getElementById(idName) != null)
    			document.getElementById(idName).innerHTML = stationList[currentStaNum]+"駅 "+currentDirection+" 時刻表";
    		
    		
    		output += "";
    		output += "";
    		output += "";
    		
    
    	}
    }
    
    
    
    // 曜日を表す列挙型
    // 曜日を表す列挙型
    const DayOfWeek = {
        SUNDAY: 0,
        MONDAY: 1,
        TUESDAY: 2,
        WEDNESDAY: 3,
        THURSDAY: 4,
        FRIDAY: 5,
        SATURDAY: 6
    };
    
    const DiaType = {
        WEEKDAY: 0,
        HOLIDAY: 1,
        OCT_01: 2,
        OCT_02: 3,
        OCT_03: 4,
    省略
    };
    
    let diaDay = DiaType.WEEKDAY;
    
    function judgeDiaDay() {
        let nowDateSet = new Date(); // 現在の日付を取得
        let nowHour = nowDateSet.getHours();
        let nowMinute = nowDateSet.getMinutes();
        let nowSecond = nowDateSet.getSeconds();
        let nowDay = nowDateSet.getDay();
        
        // 現在の年、月、日を取得
        let nowYear = nowDateSet.getFullYear();
        let nowMonth = nowDateSet.getMonth() + 1; // 月は0から始まるため1を加算
        let nowDate = nowDateSet.getDate();
    
        // 日付変更時刻と現在時刻を比較
        if (HHMMSSToSecond(nowHour, nowMinute, nowSecond) < dayChangeTime) {
            nowDateSet.setDate(nowDateSet.getDate() - 1); // 前日の日付に変更
            nowYear = nowDateSet.getFullYear();
            nowMonth = nowDateSet.getMonth() + 1;
            nowDate = nowDateSet.getDate();
            nowDay = nowDateSet.getDay();
        }
    
        if (nowYear < 2000) nowYear += 1900; // 年の補正
    
        setYear = nowYear; // ここでsetYearに現在の年を設定
        setMonth = nowMonth;
        setDate = nowDate;
        setDay = nowDay;
    
    
        switch (setMonth) {
            case 10:
                switch (setDate) {
                    case 01: diaDay = DiaType.OCT_01; break;
                    case 02: diaDay = DiaType.OCT_02; break;
                    case 03: diaDay = DiaType.OCT_03; break;
    省略
                    case 31: diaDay = DiaType.OCT_31; break;
                    default: 
                        if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SUNDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.MONDAY;  // 週末の処理
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEDNESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.THURSDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.FRIDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SATURDAY;
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;  // 週末の処理
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEEKEND;  // 週末の処理
                        } else {
                            diaDay = DiaType.HOLIDAY;
                        }
                }
                break;
            case 11:
                switch (setDate) {
                    case 01: diaDay = DiaType.NOV_01; break;
                    case 02: diaDay = DiaType.NOV_02; break;
                    case 03: diaDay = DiaType.NOV_03; break;
    省略
                    case 30: diaDay = DiaType.NOV_30; break;
                    default: 
                        if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SUNDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.MONDAY;  // 週末の処理
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEDNESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.THURSDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.FRIDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SATURDAY;
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;  // 週末の処理
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEEKEND;  // 週末の処理
                        } else {
                            diaDay = DiaType.HOLIDAY;
                        }
                }
                break;
            default: 
                if (dayJudge(setYear, setMonth, setDate, setDay)) {
                    diaDay = DiaType.WEEKDAY;
                } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                    diaDay = DiaType.WEEKEND;  // 週末の処理
                } else {
                    diaDay = DiaType.HOLIDAY;
                }
        }
    
        updateDisplayDiaDay();
        return diaDay === DiaType.WEEKDAY;
    }
    
    function updateDisplayDiaDay() {
        const todayDiaDaySpan = document.getElementById("todayDiaDaySpan");
        if (todayDiaDaySpan) {
            todayDiaDaySpan.innerHTML = getDiaTypeString(diaDay);
            todayDiaDaySpan.style.backgroundColor = getDiaTypeColor(diaDay);
        }
    }
    
    function getDiaTypeString(diaType) {
        switch (diaType) {
            case DiaType.WEEKDAY: return " 平日ダイヤ ";
            case DiaType.HOLIDAY: return "土・休日ダイヤ";
            case DiaType.OCT_01: return "10月01日ダイヤ";
            case DiaType.OCT_02: return "10月02日ダイヤ";
            case DiaType.OCT_03: return "10月03日ダイヤ";
    省略        default: return "";
        }
    }
    
    function getDiaTypeColor(diaType) {
        switch (diaType) {
            case DiaType.WEEKDAY: return "#9ff";
            case DiaType.HOLIDAY: return "#fcf";
            case DiaType.OCT_01: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
            case DiaType.OCT_02: return "#f0a0a0"; // 例:2月12日ダイヤの背景色
            case DiaType.OCT_03: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
    省略
            default: return "";
        }
    }
    
    
    function isHoliday(year, month, day) {
        const date = new Date(year, month - 9, month -10, day);
        const dayOfWeek = date.getDay(); // 曜日を取得
        return dayOfWeek === 0 || dayOfWeek === 6; // 0 は日曜日、6 は土曜日
    }
    function isWeekday(year, month, day) {
        const dayOfWeek = new Date(year, month - 1, day).getDay();
        return dayOfWeek >= 1 && dayOfWeek <= 5;
    }
    function isSunday(year, month, day) {
        const date = new Date(year, month - 1, day);
        return date.getDay() === 0; // 0 は日曜日を表します
    }
    function isWednesday(year, month, day) {
        const date = new Date(year, month - 1, day);
        return date.getDay() === 3; // 0 は日曜日を表します
    }
    function isNotWednesday(year, month, day) {
        const date = new Date(year, month - 1, day);
        return !(date.getDay() === 3); // 0 は日曜日を表します
    }
    function judgeTrainRunningDay(value) {
        if (value === "全日") return true;
    
        if (value === "平日" && diaDay === DiaType.WEEKDAY) return true;
        if (value === "土曜・休日運休" && diaDay === DiaType.WEEKDAY) return true;
        if (value === "毎日運転" && diaDay === DiaType.WEEKDAY) return true;
    
        if (value === "休日" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "土休日" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "土・休日" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "土曜・休日運転" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "毎日運転" && diaDay === DiaType.HOLIDAY) return true;
    省略
        if (value === "10月10→12日・11月1→3日の水曜日運転" && (diaDay === DiaType.OCT_10 && isWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWednesday(setYear, 10, 12))||
        (diaDay === DiaType.NOV_01 && isWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWednesday(setYear, 11, 3))) return true;
        if (value === "10月10→12日・11月1→3日の水曜日運転" && ((diaDay === DiaType.OCT_10 && isNotWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isNotWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isNotWednesday(setYear, 10, 12))||
        (diaDay === DiaType.NOV_01 && isNotWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isNotWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isNotWednesday(setYear, 11, 3)))) return true;    // 2月17日が日曜日であるかを確認
        if (value === "10月1→3日・11月25→30日運転" && (diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 12))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||(diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30))) return true;
        if (value === "日曜日" && (diaDay === DiaType.OCT_15 && isHoliday(setYear, 2, 15))||(diaDay === DiaType.OCT_16 && isHoliday(setYear, 2, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 2, 17))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 2, 23))) return true;
    
        if ((value === "平日" && diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7))) return true;
    
        return false;
    }
    
    function changeDiaType() {
        switch (diaDay) {
            case DiaType.WEEKDAY: diaDay = DiaType.HOLIDAY; break;
            case DiaType.HOLIDAY: diaDay = DiaType.OCT_01; break;
            case DiaType.OCT_01: diaDay = DiaType.OCT_02; break;
            case DiaType.OCT_02: diaDay = DiaType.OCT_03; break;
            case DiaType.OCT_03: diaDay = DiaType.OCT_04; break;
    省略        case DiaType.NOV_30: diaDay = DiaType.WEEKDAY; break;
            default: diaDay = DiaType.OCT_11; break;
        }
    
        updateDisplayDiaDay();
        getTimeTable();
        setNewTime(setSecondSum);
        drawTrain();
        resetTimetableSpace();
    }
    
    
    
    
    
    //種別を入れると文字色と背景色を返す
    //color=0なら背景色を返す、color=1なら文字色を返す
    function getTypeColor(typeName, colorType)
    {
    	var i;
    	for(i=0 ; i<trainTypeColor.length ; i++)
    	{
    		//alert(typeName+" "+trainTypeColor[i])
    		if(typeName == trainTypeColor[i][0])
    		{
    			if(colorType == 0)
    				//背景色を返す
    				return trainTypeColor[i][1][0];
    			else
    				//文字色を返す
    				return trainTypeColor[i][1][1];
    		}
    	}
    	
    }
    
    
    
    
    
    
    function HHMMtoSecond(HHMM)
    {
    	var hour = Math.floor(HHMM / 100);
    	var minute = HHMM % 100;
    	var second = 0;
    	
    	return hour * 60 * 60 + minute * 60 + second;
    }
    
    function HHMMSSToSecond(hour, minute, second)
    {
    	return hour * 60 * 60 + minute * 60 + second;
    }
    
    function secondToHHMMSS(value)
    {
    	var hour = Math.floor(value / 3600);
    	var minute = Math.floor(value % 3600 / 60);
    	var second = Math.floor(value % 60);
    	
    	return hour + ":" + minute + ":" + second;
    }
    
    function secondToHour(value)
    {
    	var num = Math.floor(value / 3600);
    	if(num < 24)
    		return num;
    	else
    		return num - 24;
    }
    
    function secondToMinute(value)
    {
    	return Math.floor(value % 3600 / 60);
    }
    
    function secondToSecond(value)
    {
    	return Math.floor(value % 60);
    }
    

    一部のダイヤや、ダイヤパターンは割愛させていただいております。

  4. 説明もコードも少ないよりは多いほうがマシですね。必要な部分だけ拾い読みしますから。少ないコードを元に推測したり追加情報を要求したりするほうがよほど疲れます。

    コードについての全体像は分かったので、あなたの期待する挙動についても隣のコメント欄で説明してあげてください。以下のようなやりとりがありましたが、結局「こういう日付を指定したらこういう結果になったが、期待していたのはこうだ」という説明がまだされていません。

    平日は表示してくれない

    も情報不足です。
    こう書かれていたら「10月11月ではない普通の平日がまったく表示されなくなった」と受け取るのが普通だと思います。
    「こういう日付を指定したらこういう結果になったが、期待していたのはこうだ」と説明しないと、どうなれば正解なのかがわからないので直しようがないです。

    あんまり伝わっていないようなので改めて言いますが、バグったコードだけ提示されても「今具体的にどのようにバグっているのか」「正しく動いたとしたらどういう結果になるか(なって欲しいか)」は分かりません。言葉による説明が必要です。

  5. @izumikota2014

    Questioner

    qiita 質問 20250220 Thu.png
    写真から見てとれるように、上画面が在線状況となります。
    下画面が時刻表となります。
    まず前提として、weekdayと、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))は、別物となります。それは理解しております。 
    したがって、or関数でくっつける操作が必要となります。
    ところが、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))のみ指定してある場合には、10月1日のダイヤパターンがきちんと表示されるのに対して、
    weekdayと、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))を併記させると、どちらも表示がなされなくなりました。
    恐らくは、10月と11月だけ、ダイヤパターンを別で保有する必要がありそうです。
    但し、期待しているのは、年が変われば、10月と11月のダイヤパターンもそれに順応して、平日土休日が入れ替わるようにしたいのです。
    そこに対し、1~9月と12月の平常時の平日ダイヤパターンを付与させたいのです。
    単純に10月1日を特別ダイヤとするならば、この実装は可能でしょうが、
    その年年によって、曜日は変動するため、それに対応したダイヤパターンを作成するにはいかんせん、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))を併記させざるを得ないのです。

  6. 画像で説明してもらえるのは助かります。

    前提として、weekdayと、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1)) は、別物となります。それは理解しております。

    前提からしてよく分かりません。まず weekday なる名前のものはコードの中に存在しません。 weekdayFlag のことですか?それとも一般的な「平日」ですか?

    その weekday と条件式 (diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1)) が同じとか違うとかいう話もこちらは(多分回答者は誰も)していないので、その理解を持ち出されても困ります。

    したがって、or関数でくっつける操作が必要となります

    or が関数ではなく演算子であることはこの際置いておきます。くっつける操作が必要になるのはなぜですか? weekday と条件式をくっつけることがどういう結果になるか想定できた上でやっていますか?

    ところが、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))のみ指定してある場合には、10月1日のダイヤパターンがきちんと表示されるのに対して、
    weekdayと、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))を併記させると、どちらも表示がなされなくなりました

    isWeekday() のバグは直しましたか?また、そもそも10月1日から7日は休日でも平日ダイヤにしたい(とコードからは読み取れる)のに isWeekday(setYear, 10, 1) で平日かどうか判定しているのはおかしくありませんか?

  7. @izumikota2014

    Questioner

    isweekdayは、10月と11月に対して、平日か土休日か判断させております。
    判断しているのは先ほどのこのfunction isWeekday(year, month, day) {
    const dayOfWeek = new Date(year, month - 1, day).getDay();
    return dayOfWeek >= 1 && dayOfWeek <= 5;
    }というものになります。
    これに対し、10月と11月以外は、平日と土休日を判断するだけの単純なダイヤパターンといたしたいのです。

  8. 「なぜ」判断させているかを教えてください。 「どうやって」かはもう分かっています。 →バグを直した関数で判断している、ということですね。それについては了解しました。

    それと、 weekday の説明もしてください。

    質問の一部だけ散発的に返事されるとやり取りが大変なので、全部の論点についてまとめて回答して欲しいです。(「別のコメントで書く」とか「分からない」とかいう答えでもいいので)

  9. @izumikota2014

    Questioner

    97年10月期の時刻表を反映させているためです。
    当時の特殊なダイヤパターンを反映させつつも、10月・11月以外は平日と土休日のダイヤパターンの分岐にとどめたいのです。
    weekdayは、例えば、10月1→7日に平日があれば、
    if (value === "10月1→7日平日運転" && ((diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
    (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7))) return true;
    というようにして、この中から、平日だけを取得して、反映させているに過ぎないのです。

  10. 97年10月期の時刻表を反映させているためです。
    当時の特殊なダイヤパターンを反映させつつも、10月・11月以外は平日と土休日のダイヤパターンの分岐にとどめたいのです。

    「97年の10月か、それ以外の年の10月か」を判断する箇所がどこにもないので、どの年の10月も特殊なパターンになりそうですが、それでいいんですかね?それでいいとして、そのパターンは10月1日が平日かどうか判断する必要があるんですか?実際のパターンを教えてください。

    weekdayは、例えば、10月1→7日に平日があれば、〔コード略〕というようにして、この中から、平日だけを取得して、反映させているに過ぎないのです。

    意味が分かりません。さっき weekday(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1)) を or でくっつける話をしていたので、 weekday は何らかの JavaScript の値であるはずですよね。「この中から、平日だけを取得して、反映させている」という処理は値ではないので weekday とはなりえません。

やあ、こっちでもアカウント転生してるんですね。お疲れ様です。他の方の回答のコメントから引用しますが、

まず前提として、weekdayと、(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))は、別物となります。

まず前提として、weekdayという変数がコードに見当たらない(パクリ元のコードにもない)と思います。weekdayを定義した部分のコードがないと、何を言っているのか第三者にはまったく伝わらないと思うのですが、どうですか?
もし、weekdayが概念的抽象的なナニモノかであるためコードに存在しないならば、その概念を説明しないと(最終的にはその概念をコードで表現しないと)どうにも伝わらないと思うのですが、どうですか?

わかりやすく1行でまとめると、
「質問を第三者にわかるように書け」
ということですね。よろしくお願いいたします。

1Like

説明が何一つわからない
今、2月だとして「ある日」だけは特別ダイヤにしたいということ?
そもそももともとが平日休日しか対応してないのに?

めんどくさいけどそれっぽいところを引っ張り出してきた

main.js
//平日ダイヤと土・休日ダイヤの入れ替え
function changeDiaType()
{
	if(DiaDay == 0)
	{
		document.getElementById("todayDiaDaySpan").innerHTML = "土・休日ダイヤ";
		document.getElementById("todayDiaDaySpan").style.backgroundColor = "#fcf";
		DiaDay = 1;
	}
	else
	{
		document.getElementById("todayDiaDaySpan").innerHTML = " 平日ダイヤ ";
		document.getElementById("todayDiaDaySpan").style.backgroundColor = "#9ff";
		DiaDay = 0;
	}
	
	//時刻表データ再読み込み
	getTimeTable();
	
	//再表示
	setNewTime(setSecondSum);	
	
	//路線図に列車を配置していく
	drawTrain();
	
	//時刻表スペースをリセット
	var idName = "staTimetableTime0Div";
	document.getElementById(idName).innerHTML = "駅名をクリックすると、時刻表が表示されます。";
	var idName = "staTimetableTime1Div";
	document.getElementById(idName).innerHTML = "";
	var idName = "staTimetableTimeTitle0Div";
	document.getElementById(idName).innerHTML = "";
	var idName = "staTimetableTimeTitle1Div";
	document.getElementById(idName).innerHTML = "";
	
	//インタフェース再セット
	//timeButtonInterfaceUpdate(true);
	
}

diaTypeJudge.js
//平日ダイヤか土・休日ダイヤかを判定する
function dayJudge(year, month, date, day)
{
	//alert(year +" "+ month +" "+ date +" "+ day)
	//フラグ
	var weekdayFlag = true;
	
	//月?金なら立てる
	if(day >= 1 && day <= 5)
		weekdayFlag = true;
	else
		weekdayFlag = false;
	
	//祝日ならたおす
	if(year == 2013 && month == 1 && date == 1)
		weekdayFlag = false;
	else if(year == 2013 && month == 10 && date == 14)
		weekdayFlag = false;
	else if(year == 2013 && month == 11 && date == 4)
		weekdayFlag = false;
	else if(year == 2013 && month == 12 && date == 23)
		weekdayFlag = false;
	else if(year == 2014 && month == 1 && date == 1)
		weekdayFlag = false;
	else if(year == 2014 && month == 1 && date == 2)
		weekdayFlag = false;
	else if(year == 2014 && month == 1 && date == 3)
		weekdayFlag = false;
	else if(year == 2014 && month == 1 && date == 13)
		weekdayFlag = false;
	else if(year == 2014 && month == 2 && date == 11)
		weekdayFlag = false;
	else if(year == 2014 && month == 3 && date == 21)
		weekdayFlag = false;
	else if(year == 2014 && month == 4 && date == 29)
		weekdayFlag = false;
	else if(year == 2014 && month == 5 && date == 5)
		weekdayFlag = false;
	else if(year == 2014 && month == 7 && date == 21)
		weekdayFlag = false;
	else if(year == 2014 && month == 9 && date == 15)
		weekdayFlag = false;
	else if(year == 2014 && month == 9 && date == 23)
		weekdayFlag = false;
	else if(year == 2014 && month == 10 && date == 12)
		weekdayFlag = false;
	else if(year == 2014 && month == 11 && date == 3)
		weekdayFlag = false;
	else if(year == 2014 && month == 11 && date == 24)
		weekdayFlag = false;
	else if(year == 2014 && month == 12 && date == 23)
		weekdayFlag = false;
	else if(year == 2015 && month == 1 && date == 1)
		weekdayFlag = false;
	else if(year == 2015 && month == 1 && date == 2)
		weekdayFlag = false;
	else if(year == 2015 && month == 1 && date == 3)
		weekdayFlag = false;
	else if(year == 2015 && month == 1 && date == 12)
		weekdayFlag = false;
	else if(year == 2015 && month == 2 && date == 11)
		weekdayFlag = false;
	else if(year == 2015 && month == 3 && date == 21)
		weekdayFlag = false;
	
	return weekdayFlag;
}

0Like

javascript初心者にしてはやろうとしてることが複雑すぎて、目的のものを作るのは難しそうな気がします。

  • まずは平日ダイヤのみで意図したとおりの動作できるものにする
  • それができたら土日ダイヤにも対応する
  • 10月1日だけ特殊ダイヤにする

といった感じで段階を踏んでいった方がいいでしょう。
(平日ダイヤだけでも表示が複雑でかなりハードル高そうに見えるんですが)

0Like

Comments

  1. @izumikota2014

    Questioner

    function judgeTrainRunningDay(value) {
    if (value === "全日") return true;

    if (value === "平日" && diaDay === DiaType.WEEKDAY) return true;
    if (value === "土曜・休日運休" && diaDay === DiaType.WEEKDAY) return true;
    if (value === "毎日運転" && diaDay === DiaType.WEEKDAY) return true;
    
    if (value === "休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土・休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土曜・休日運転" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "毎日運転" && diaDay === DiaType.HOLIDAY) return true;
    return false;
    

    }→元ネタは、function judgeTrainRunningDay(value) {に関しては、確かこれだけだったはずです。
    この時は、平日ダイヤは平日のみ表示され、土休日ダイヤは土休日のみ表示されていたのです。
    それがいろいろ付与することによって複雑怪奇と化しました。

  2. その次にやるのは「10月1日だけ特殊ダイヤにする」ですね。
    段階を踏みながら少しずつ動作確認していけば「この部分を変えたらおかしくなった」を把握しやすいです。

    というか

    平日は表示してくれない

    ってのはたとえば「2月20日だからdiaDayDiaType.FEB_20をセット」 → 「diaDayDiaType.FEB_20DiaType.WEEKDAYじゃないから平日ではない」って判定されてるのでは?

    あと「変更したのはjudgeTrainRunningDay関連だけなのでその部分だけ開示」とする気持ちは理解できますが、あなた以外は元ネタのことを知らないのでjudgeTrainRunningDayがどういったものなのかさっぱりわかりません。
    参考にした元ネタがあるならそれも明示した方がいいです。
    でないと「判定の部分だけ出してるけど、問題はデータの持ち方の方にあるんじゃない?」みたいなことも考えちゃうわけです。

  3. @izumikota2014

    Questioner

    元ネタは
    http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html
    です。
    長くなるので本当は記述したくなかったのですが、
    もう少し補足させていただきます。

    const DayOfWeek = {
        SUNDAY: 0,
        MONDAY: 1,
        TUESDAY: 2,
        WEDNESDAY: 3,
        THURSDAY: 4,
        FRIDAY: 5,
        SATURDAY: 6
    };
    
    const DiaType = {
        WEEKDAY: 0,
        HOLIDAY: 1,
        OCT_01: 2,
        OCT_02: 3,
        OCT_03: 4,
    この間省略
        NOV_30: 62,
    };
    
    let diaDay = DiaType.WEEKDAY;
    
    function judgeDiaDay() {
        let nowDateSet = new Date(); // 現在の日付を取得
        let nowHour = nowDateSet.getHours();
        let nowMinute = nowDateSet.getMinutes();
        let nowSecond = nowDateSet.getSeconds();
        let nowDay = nowDateSet.getDay();
        
        // 現在の年、月、日を取得
        let nowYear = nowDateSet.getFullYear();
        let nowMonth = nowDateSet.getMonth() + 1; // 月は0から始まるため1を加算
        let nowDate = nowDateSet.getDate();
    
        // 日付変更時刻と現在時刻を比較
        if (HHMMSSToSecond(nowHour, nowMinute, nowSecond) < dayChangeTime) {
            nowDateSet.setDate(nowDateSet.getDate() - 1); // 前日の日付に変更
            nowYear = nowDateSet.getFullYear();
            nowMonth = nowDateSet.getMonth() + 1;
            nowDate = nowDateSet.getDate();
            nowDay = nowDateSet.getDay();
        }
    
        if (nowYear < 2000) nowYear += 1900; // 年の補正
    
        setYear = nowYear; // ここでsetYearに現在の年を設定
        setMonth = nowMonth;
        setDate = nowDate;
        setDay = nowDay;
    
    
        switch (setMonth) {
            case 10:
                switch (setDate) {
                    case 01: diaDay = DiaType.OCT_01; break;
                    case 02: diaDay = DiaType.OCT_02; break;
                    case 03: diaDay = DiaType.OCT_03; break;
    この間省略
                    case 31: diaDay = DiaType.OCT_31; break;
                    default: 
                        if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SUNDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.MONDAY;  // 週末の処理
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEDNESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.THURSDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.FRIDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SATURDAY;
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;  // 週末の処理
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEEKEND;  // 週末の処理
                        } else {
                            diaDay = DiaType.HOLIDAY;
                        }
                }
                break;
            case 11:
                switch (setDate) {
                    case 01: diaDay = DiaType.NOV_01; break;
                    case 02: diaDay = DiaType.NOV_02; break;
                    case 03: diaDay = DiaType.NOV_03; break;
    この間省略
                    case 30: diaDay = DiaType.NOV_30; break;
                    default: 
                        if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SUNDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.MONDAY;  // 週末の処理
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEDNESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.THURSDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.FRIDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SATURDAY;
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;  // 週末の処理
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEEKEND;  // 週末の処理
                        } else {
                            diaDay = DiaType.HOLIDAY;
                        }
                }
                break;
            default: 
                if (dayJudge(setYear, setMonth, setDate, setDay)) {
                    diaDay = DiaType.WEEKDAY;
                } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                    diaDay = DiaType.WEEKEND;  // 週末の処理
                } else {
                    diaDay = DiaType.HOLIDAY;
                }
        }
    
        updateDisplayDiaDay();
        return diaDay === DiaType.WEEKDAY;
    }
    
    function updateDisplayDiaDay() {
        const todayDiaDaySpan = document.getElementById("todayDiaDaySpan");
        if (todayDiaDaySpan) {
            todayDiaDaySpan.innerHTML = getDiaTypeString(diaDay);
            todayDiaDaySpan.style.backgroundColor = getDiaTypeColor(diaDay);
        }
    }
    
    function getDiaTypeString(diaType) {
        switch (diaType) {
            case DiaType.WEEKDAY: return " 平日ダイヤ ";
            case DiaType.HOLIDAY: return "土・休日ダイヤ";
            case DiaType.OCT_01: return "10月01日ダイヤ";
            case DiaType.OCT_02: return "10月02日ダイヤ";
            case DiaType.OCT_03: return "10月03日ダイヤ";
    この間省略
            case DiaType.NOV_30: return "11月30日ダイヤ";
            default: return "";
        }
    }
    
    function getDiaTypeColor(diaType) {
        switch (diaType) {
            case DiaType.WEEKDAY: return "#9ff";
            case DiaType.HOLIDAY: return "#fcf";
            case DiaType.OCT_01: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
            case DiaType.OCT_02: return "#f0a0a0"; // 例:2月12日ダイヤの背景色
            case DiaType.OCT_03: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
    この間省略
            case DiaType.NOV_30: return "#a0a0f0"; // 例:2月30日ダイヤの背景色
            default: return "";
        }
    }
    
    
    function isHoliday(year, month, day) {
        const date = new Date(year, month - 9, month -10, day);
        const dayOfWeek = date.getDay(); // 曜日を取得
        return dayOfWeek === 0 || dayOfWeek === 6; // 0 は日曜日、6 は土曜日
    }
    function isWeekday(year, month, day) {
        const dayOfWeek = new Date(year, month - 9, month - 10, day).getDay(); // 曜日を取得
        return dayOfWeek >= 1 && dayOfWeek <= 5; // 1 は月曜日、5 は金曜日
    }
    function isSunday(year, month, day) {
        const date = new Date(year, month - 1, day);
        return date.getDay() === 0; // 0 は日曜日を表します
    }
    function isWednesday(year, month, day) {
        const date = new Date(year, month - 1, day);
        return date.getDay() === 3; // 0 は日曜日を表します
    }
    function isNotWednesday(year, month, day) {
        const date = new Date(year, month - 1, day);
        return !(date.getDay() === 3); // 0 は日曜日を表します
    }
    function judgeTrainRunningDay(value) {
        if (value === "全日") return true;
    
        if (value === "平日" && diaDay === DiaType.WEEKDAY) return true;
        if (value === "土曜・休日運休" && diaDay === DiaType.WEEKDAY) return true;
        if (value === "毎日運転" && diaDay === DiaType.WEEKDAY) return true;
    
        if (value === "休日" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "土休日" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "土・休日" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "土曜・休日運転" && diaDay === DiaType.HOLIDAY) return true;
        if (value === "毎日運転" && diaDay === DiaType.HOLIDAY) return true;
    
        if (value === "10月10→12日・11月1→3日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
        (diaDay === DiaType.NOV_01)|| (diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03))) return true;
        if (value === "10月10→12日・11月1→3・22→24日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
        (diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03)||
        (diaDay === DiaType.NOV_22)||(diaDay === DiaType.NOV_23)||(diaDay === DiaType.NOV_24))) return true;
    この間省略
        if (value === "10月10→12日・11月1→3日の水曜日運転" && (diaDay === DiaType.OCT_10 && isWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWednesday(setYear, 10, 12))||
        (diaDay === DiaType.NOV_01 && isWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWednesday(setYear, 11, 3))) return true;
        if (value === "10月10→12日・11月1→3日の水曜日運転" && ((diaDay === DiaType.OCT_10 && isNotWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isNotWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isNotWednesday(setYear, 10, 12))||
        (diaDay === DiaType.NOV_01 && isNotWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isNotWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isNotWednesday(setYear, 11, 3)))) return true;    // 2月17日が日曜日であるかを確認
        if (value === "10月1→3日・11月25→30日運転" && (diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 12))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||(diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30))) return true;
        if (value === "10月1→3日・11月25→30日運転" && (diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 12))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||(diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30))) return true;
        if (value === "10月1→7日平日運転" && ((diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7)) return true;
    
    
    
        return false;
    }
    
    function changeDiaType() {
        switch (diaDay) {
            case DiaType.WEEKDAY: diaDay = DiaType.HOLIDAY; break;
            case DiaType.HOLIDAY: diaDay = DiaType.OCT_01; break;
            case DiaType.OCT_01: diaDay = DiaType.OCT_02; break;
            case DiaType.OCT_02: diaDay = DiaType.OCT_03; break;
            case DiaType.OCT_03: diaDay = DiaType.OCT_04; break;
    この間省略
            case DiaType.NOV_29: diaDay = DiaType.NOV_30; break;
            case DiaType.NOV_30: diaDay = DiaType.WEEKDAY; break;
            default: diaDay = DiaType.OCT_11; break;
        }
    
        updateDisplayDiaDay();
        getTimeTable();
        setNewTime(setSecondSum);
        drawTrain();
        resetTimetableSpace();
    }
    

    これで大丈夫でしょうか。

  4. dayJudge関数って平日だと true 土日祝日だと falseを返すだけなのに
    同じ日付で複数呼び出して返り値で分岐するってどういうことなのでしょうか?

    diaTypeJudge.js
    function dayJudge(year, month, date, day)
    
  5. 手がかりとしては大いに役立ちますが、こちらで動作確認できるわけではないので大丈夫ではぜんぜんないです。
    仕様を把握しきれていないこともあって、情報開示だけで大丈夫になることは期待しない方がいいです。

    先に書いたように「平日、土日、10月1日の三種類を切り替えるだけ」を試してください。


    平日は表示してくれない

    も情報不足です。
    こう書かれていたら「10月11月ではない普通の平日がまったく表示されなくなった」と受け取るのが普通だと思います。
    「こういう日付を指定したらこういう結果になったが、期待していたのはこうだ」と説明しないと、どうなれば正解なのかがわからないので直しようがないです。

    今の時点で想像すると、たとえば「10月1日は10月1日の特別ダイヤだけになり、平日ダイヤは表示されなかった」でしょうか?
    そうだとすれば「平日ダイヤが表示される条件はdiaDayDiaType.WEEKDAYであること、10月1日だとdiaDayDiaType.OCT_01なので平日ダイヤは表示されない」となるのは妥当でしょう。

  6. @izumikota2014

    Questioner

    仕組みとしてはこうです。weekdayと(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))←これは全然別物として判断されるのは理解できます。
    でも、通常であれば、
    if ((value === "平日" && diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01))とした場合であれば、挙動するのですが、
    これに(DiaType.OCT_01 && isWeekday(setYear, 10, 1))といった具合に、
    isWeekday(setYear, 10, 1)が増えるだけで挙動ができないのはなぜでしょうか?

  7. 他のツリーで回答しましたが、 isWeekday(setYear, 10, 1) はバグっていて正しい値を返しません。

  8. (以下、6個ほど上のコメントの judgeTrainRunningDay() 関数から一部引用)

        if (value === "10月1→7日平日運転" && (diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))|| ) return true;
    

    この if 文が「10月1日〜7日は休日であっても平日運転と判定する」意図だとすると、(isWeekday(setYear, 10, 1) によって)10月1日が平日であることを条件に含めているのっておかしくないですか?休日だったら休日運転と判定されてしまいますよね?

  9. @izumikota2014 今気づきましたが以下の 運転" && ( あたりで全角カッコが使われてますね。半角に直してください。このせいでコード全体がまったく動いていないと思われます。

        if (value === "10月1→7日平日運転" && (diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))|| ) return true;
    

単純なコードの重複と、コードの記述ミスを連発してただけでした。
以下のように修復訂正することによって、挙動エラーがなくなりました。
修正した点は主に、
function getDiaTypeColor(diaType) {内switch構文のcase文の
DiaType.OCT_08: DiaType.OCT_18: DiaType.OCT_28: DiaType.NOV_08: DiaType.NOV_18: DiaType.NOV_28:が重複していたこと、
function judgeTrainRunningDay(value) {内の単純な()の個数の間違いだったと思います。
とはいえ、これで正常に作動するようになりました。

const DayOfWeek = {
    SUNDAY: 0,
    MONDAY: 1,
    TUESDAY: 2,
    WEDNESDAY: 3,
    THURSDAY: 4,
    FRIDAY: 5,
    SATURDAY: 6
};

const DiaType = {
    WEEKDAY: 0,
    HOLIDAY: 1,
    OCT_01: 2,
    OCT_02: 3,
    OCT_03: 4,
    省略
};

let diaDay = DiaType.WEEKDAY;

function judgeDiaDay() {
    let nowDateSet = new Date(); // 現在の日付を取得
    let nowHour = nowDateSet.getHours();
    let nowMinute = nowDateSet.getMinutes();
    let nowSecond = nowDateSet.getSeconds();
    let nowDay = nowDateSet.getDay();
    
    // 現在の年、月、日を取得
    let nowYear = nowDateSet.getFullYear();
    let nowMonth = nowDateSet.getMonth() + 1; // 月は0から始まるため1を加算
    let nowDate = nowDateSet.getDate();

    // 日付変更時刻と現在時刻を比較
    if (HHMMSSToSecond(nowHour, nowMinute, nowSecond) < dayChangeTime) {
        nowDateSet.setDate(nowDateSet.getDate() - 1); // 前日の日付に変更
        nowYear = nowDateSet.getFullYear();
        nowMonth = nowDateSet.getMonth() + 1;
        nowDate = nowDateSet.getDate();
        nowDay = nowDateSet.getDay();
    }

    if (nowYear < 2000) nowYear += 1900; // 年の補正

    setYear = nowYear; // ここでsetYearに現在の年を設定
    setMonth = nowMonth;
    setDate = nowDate;
    setDay = nowDay;


    switch (setMonth) {
        case 10:
            switch (setDate) {
                case 01: diaDay = DiaType.OCT_01; break;
                case 02: diaDay = DiaType.OCT_02; break;
                case 03: diaDay = DiaType.OCT_03; break;
                省略
                default: 
                    if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.SUNDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.MONDAY;  // 週末の処理
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.TUESDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.WEDNESDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.THURSDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.FRIDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.SATURDAY;
                    } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.WEEKEND;  // 週末の処理
                    } else {
                        diaDay = DiaType.HOLIDAY;
                    }
            }
            break;
        case 11:
            switch (setDate) {
                case 01: diaDay = DiaType.NOV_01; break;
                case 02: diaDay = DiaType.NOV_02; break;
                case 03: diaDay = DiaType.NOV_03; break;
                省略
                default: 
                    if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.SUNDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.MONDAY;  // 週末の処理
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.TUESDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.WEDNESDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.THURSDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.FRIDAY;
                    } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.SATURDAY;
                    } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                        diaDay = DiaType.WEEKEND;  // 週末の処理
                    } else {
                        diaDay = DiaType.HOLIDAY;
                    }
            }
                break;
            default: 
            if (dayJudge(setYear, setMonth, setDate, setDay)) {
                diaDay = DiaType.WEEKDAY;
            } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                diaDay = DiaType.WEEKEND;  // 週末の処理
            } else {
                diaDay = DiaType.HOLIDAY;
            }
    }

    updateDisplayDiaDay();
    return diaDay === DiaType.WEEKDAY;
}

function updateDisplayDiaDay() {
    const todayDiaDaySpan = document.getElementById("todayDiaDaySpan");
    if (todayDiaDaySpan) {
        todayDiaDaySpan.innerHTML = getDiaTypeString(diaDay);
        todayDiaDaySpan.style.backgroundColor = getDiaTypeColor(diaDay);
    }
}

function getDiaTypeString(diaType) {
    switch (diaType) {
        case DiaType.WEEKDAY: return " 平日ダイヤ ";
        case DiaType.HOLIDAY: return "土・休日ダイヤ";
        case DiaType.OCT_01: return "10月01日ダイヤ";
        case DiaType.OCT_02: return "10月02日ダイヤ";
        case DiaType.OCT_03: return "10月03日ダイヤ";
        省略
        default: return "";
    }
}

function getDiaTypeColor(diaType) {
    switch (diaType) {
        case DiaType.WEEKDAY: return "#9ff";
        case DiaType.HOLIDAY: return "#fcf";
        case DiaType.OCT_01: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
        case DiaType.OCT_02: return "#f0a0a0"; // 例:2月12日ダイヤの背景色
        case DiaType.OCT_03: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
        省略
        default: return "";
    }
}


function isHoliday(year, month, day) {
    const date = new Date(year, month - 1, day); // Month is 0-indexed in Date
    const dayOfWeek = date.getDay();
    return dayOfWeek === 0 || dayOfWeek === 6; // 0 is Sunday, 6 is Saturday
}

function isWeekday(year, month, day) {
    const dayOfWeek = new Date(year, month - 1, day).getDay();
    return dayOfWeek >= 1 && dayOfWeek <= 5;
}

function isSunday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() === 0;
}

function isWednesday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() === 3;
}

function isNotWednesday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() !== 3; // Use !== for negation
}

function judgeTrainRunningDay(value) {
    if (value === "全日") return true;

    if (value === "平日" && diaDay === DiaType.WEEKDAY) return true;
    if (value === "土曜・休日運休" && diaDay === DiaType.WEEKDAY) return true;
    if (value === "毎日運転" && diaDay === DiaType.WEEKDAY) return true;

    if (value === "休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土・休日" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "土曜・休日運転" && diaDay === DiaType.HOLIDAY) return true;
    if (value === "毎日運転" && diaDay === DiaType.HOLIDAY) return true;

    if (value === "10月10→12日・11月1→3日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
        (diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03))) return true;
    if (value === "10月10→12日・11月1→3・22→24日運転" &&((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
        (diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03)||(diaDay === DiaType.NOV_22)||(diaDay === DiaType.NOV_23)||(diaDay === DiaType.NOV_24)))
        return true;
    if (value === "10月1日→11月16日運転" && ((diaDay === DiaType.OCT_01)||(diaDay === DiaType.OCT_02)||(diaDay === DiaType.OCT_03)||(diaDay === DiaType.OCT_04)||(diaDay === DiaType.OCT_05)||
        (diaDay === DiaType.OCT_06)||(diaDay === DiaType.OCT_07)||(diaDay === DiaType.OCT_08)||(diaDay === DiaType.OCT_09)||(diaDay === DiaType.OCT_10)||
        (diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||(diaDay === DiaType.OCT_13)||(diaDay === DiaType.OCT_14)||(diaDay === DiaType.OCT_15)||
        (diaDay === DiaType.OCT_16)||(diaDay === DiaType.OCT_17)||(diaDay === DiaType.OCT_18)||(diaDay === DiaType.OCT_19)||(diaDay === DiaType.OCT_20)||
        (diaDay === DiaType.OCT_21)||(diaDay === DiaType.OCT_22)||(diaDay === DiaType.OCT_23)||(diaDay === DiaType.OCT_24)||(diaDay === DiaType.OCT_25)||
        (diaDay === DiaType.OCT_26)||(diaDay === DiaType.OCT_27)||(diaDay === DiaType.OCT_28)||(diaDay === DiaType.OCT_29)||(diaDay === DiaType.OCT_30)||
        (diaDay === DiaType.OCT_31)||
        (diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03)||(diaDay === DiaType.NOV_04)|| (diaDay === DiaType.NOV_05)||
        (diaDay === DiaType.NOV_06)||(diaDay === DiaType.NOV_07)||(diaDay === DiaType.NOV_08)||(diaDay === DiaType.NOV_09)||(diaDay === DiaType.NOV_10)||
        (diaDay === DiaType.NOV_11)||(diaDay === DiaType.NOV_12)||(diaDay === DiaType.NOV_13)||(diaDay === DiaType.NOV_14)||(diaDay === DiaType.NOV_15)||
        (diaDay === DiaType.NOV_16))) return true;
    if (value === "11月2・3日運転" && ((diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03))) return true;
    if (value === "10月10・12日・11月1・3・21・23日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_12)||
        (diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_03)||
        (diaDay === DiaType.NOV_21)||(diaDay === DiaType.NOV_23))) return true;
    if (value === "10月4・5・18・19日運転" && ((diaDay === DiaType.OCT_04)||(diaDay === DiaType.OCT_05)||
        (diaDay === DiaType.OCT_18)||(diaDay === DiaType.OCT_19))) return true;
    if (value === "10月25・26日・11月8・9・15・16日運転" && ((diaDay === DiaType.OCT_25)||(diaDay === DiaType.OCT_26)||
        (diaDay === DiaType.NOV_08)||(diaDay === DiaType.NOV_09)||(diaDay === DiaType.NOV_15)||(diaDay === DiaType.NOV_16))) return true;
    if (value === "10月4日→11月24日の土曜・休日運転" && ((diaDay === DiaType.OCT_04 && isHoliday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isHoliday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isHoliday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isHoliday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isHoliday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isHoliday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isHoliday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isHoliday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isHoliday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isHoliday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isHoliday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isHoliday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isHoliday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isHoliday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isHoliday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isHoliday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isHoliday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isHoliday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isHoliday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isHoliday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isHoliday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isHoliday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isHoliday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isHoliday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isHoliday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isHoliday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isHoliday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isHoliday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isHoliday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isHoliday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isHoliday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isHoliday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isHoliday(setYear, 11, 12))||(diaDay === DiaType.NOV_13 && isHoliday(setYear, 11, 13))||(diaDay === DiaType.NOV_14 && isHoliday(setYear, 11, 14))||(diaDay === DiaType.NOV_15 && isHoliday(setYear, 11, 15))||
        (diaDay === DiaType.NOV_16 && isHoliday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isHoliday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isHoliday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isHoliday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isHoliday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isHoliday(setYear, 11, 24)))) return true;
    if (value === "10月10・12日・11月1・3・22・24日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_12)||(diaDay === DiaType.OCT_22)||(diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_03)||(diaDay === DiaType.NOV_22)||
       (diaDay === DiaType.NOV_24))) return true;
    if (value === "10月5→26日の休日と11月9・16・22・24日運転" && ((diaDay === DiaType.OCT_05 && isSunday(setYear, 10, 5))||
    (diaDay === DiaType.OCT_06 && isSunday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isSunday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isSunday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isSunday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isSunday(setYear, 10, 10))||
    (diaDay === DiaType.OCT_11 && isSunday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isSunday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isSunday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isSunday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isSunday(setYear, 10, 15))||
    (diaDay === DiaType.OCT_16 && isSunday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isSunday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isSunday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isSunday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isSunday(setYear, 10, 20))||
    (diaDay === DiaType.OCT_21 && isSunday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isSunday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isSunday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isSunday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isSunday(setYear, 10, 25))||
    (diaDay === DiaType.OCT_26 && isSunday(setYear, 10, 26))||(diaDay === DiaType.NOV_09)||(diaDay === DiaType.NOV_22)||(diaDay === DiaType.NOV_24))) return true;
    if (value === "10月8・9・13→31日・11月4→26日の水曜日運転" && ((diaDay === DiaType.OCT_08 && isWednesday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isWednesday(setYear, 10, 9))||(diaDay === DiaType.OCT_13 && isWednesday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isWednesday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isWednesday(setYear, 10, 15))||
    (diaDay === DiaType.OCT_16 && isWednesday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isWednesday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isWednesday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isWednesday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isWednesday(setYear, 10, 20))||
    (diaDay === DiaType.OCT_21 && isWednesday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isWednesday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isWednesday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isWednesday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isWednesday(setYear, 10, 25))||
    (diaDay === DiaType.OCT_26 && isWednesday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isWednesday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isWednesday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isWednesday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isWednesday(setYear, 10, 30))||
    (diaDay === DiaType.OCT_31 && isWednesday(setYear, 10, 31))||
    (diaDay === DiaType.NOV_04 && isWednesday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isWednesday(setYear, 11, 5))||
    (diaDay === DiaType.NOV_06 && isWednesday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isWednesday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isWednesday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isWednesday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isWednesday(setYear, 11, 10))||
    (diaDay === DiaType.NOV_11 && isWednesday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isWednesday(setYear, 11, 12))||(diaDay === DiaType.NOV_13 && isWednesday(setYear, 11, 13))||(diaDay === DiaType.NOV_14 && isWednesday(setYear, 11, 14))||(diaDay === DiaType.NOV_15 && isWednesday(setYear, 11, 15))||
    (diaDay === DiaType.NOV_16 && isWednesday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isWednesday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isWednesday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isWednesday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isWednesday(setYear, 11, 20))||
    (diaDay === DiaType.NOV_21 && isWednesday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isWednesday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isWednesday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isWednesday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isWednesday(setYear, 11, 25))||
    (diaDay === DiaType.NOV_26 && isWednesday(setYear, 11, 26)))) return true;
    if (value === "10月8・9・13→31日・11月4→26日の水曜日運休" && ((diaDay === DiaType.OCT_08 && isNotWednesday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isNotWednesday(setYear, 10, 9))||(diaDay === DiaType.OCT_13 && isNotWednesday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isNotWednesday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isNotWednesday(setYear, 10, 15))||
    (diaDay === DiaType.OCT_16 && isNotWednesday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isNotWednesday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isNotWednesday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isNotWednesday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isNotWednesday(setYear, 10, 20))||
    (diaDay === DiaType.OCT_21 && isNotWednesday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isNotWednesday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isNotWednesday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isNotWednesday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isNotWednesday(setYear, 10, 25))||
    (diaDay === DiaType.OCT_26 && isNotWednesday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isNotWednesday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isNotWednesday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isNotWednesday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isNotWednesday(setYear, 10, 30))||
    (diaDay === DiaType.OCT_31 && isNotWednesday(setYear, 10, 31))||
    (diaDay === DiaType.NOV_04 && isNotWednesday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isNotWednesday(setYear, 11, 5))||
    (diaDay === DiaType.NOV_06 && isNotWednesday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isNotWednesday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isNotWednesday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isNotWednesday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isNotWednesday(setYear, 11, 10))||
    (diaDay === DiaType.NOV_11 && isNotWednesday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isNotWednesday(setYear, 11, 12))||(diaDay === DiaType.NOV_13 && isNotWednesday(setYear, 11, 13))||(diaDay === DiaType.NOV_14 && isNotWednesday(setYear, 11, 14))||(diaDay === DiaType.NOV_15 && isNotWednesday(setYear, 11, 15))||
    (diaDay === DiaType.NOV_16 && isNotWednesday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isNotWednesday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isNotWednesday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isNotWednesday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isNotWednesday(setYear, 11, 20))||
    (diaDay === DiaType.NOV_21 && isNotWednesday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isNotWednesday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isNotWednesday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isNotWednesday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isNotWednesday(setYear, 11, 25))||
    (diaDay === DiaType.NOV_26 && isNotWednesday(setYear, 11, 26)))) return true;
    if (value === "10月10→12日・11月1→3日の水曜日運転" && ((diaDay === DiaType.OCT_10 && isWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWednesday(setYear, 10, 12))||
    (diaDay === DiaType.NOV_01 && isWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWednesday(setYear, 11, 3)))) return true;
    if (value === "10月10→12日・11月1→3日の水曜日運休" && ((diaDay === DiaType.OCT_10 && isNotWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isNotWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isNotWednesday(setYear, 10, 12))||
    (diaDay === DiaType.NOV_01 && isNotWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isNotWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isNotWednesday(setYear, 11, 3)))) return true;    // 2月17日が日曜日であるかを確認
    if (value === "10月1→3日・11月25→30日運転" && ((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
    (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
    (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||(diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))) return true;
    if (value === "10月1→7日平日運転" && ((diaDay === DiaType.WEEKDAY)||(diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
    (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isWeekday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isWeekday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isWeekday(setYear, 10, 10))||
    (diaDay === DiaType.OCT_11 && isWeekday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWeekday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isWeekday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isWeekday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isWeekday(setYear, 10, 15))||
    (diaDay === DiaType.OCT_16 && isWeekday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isWeekday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isWeekday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isWeekday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isWeekday(setYear, 10, 20))||
    (diaDay === DiaType.OCT_21 && isWeekday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isWeekday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isWeekday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isWeekday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isWeekday(setYear, 10, 25))||
    (diaDay === DiaType.OCT_26 && isWeekday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isWeekday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isWeekday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isWeekday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isWeekday(setYear, 10, 30))||
    (diaDay === DiaType.OCT_31 && isWeekday(setYear, 10, 31))||
    (diaDay === DiaType.NOV_01 && isWeekday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isWeekday(setYear, 11, 5))||
    (diaDay === DiaType.NOV_06 && isWeekday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isWeekday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isWeekday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isWeekday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isWeekday(setYear, 11, 10))||
    (diaDay === DiaType.NOV_11 && isWeekday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isWeekday(setYear, 11, 12))||(diaDay === DiaType.NOV_13 && isWeekday(setYear, 11, 13))||(diaDay === DiaType.NOV_14 && isWeekday(setYear, 11, 14))||(diaDay === DiaType.NOV_15 && isWeekday(setYear, 11, 15))||
    (diaDay === DiaType.NOV_16 && isWeekday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isWeekday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isWeekday(setYear, 11, 20))||
    (diaDay === DiaType.NOV_21 && isWeekday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isWeekday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isWeekday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isWeekday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isWeekday(setYear, 11, 25))||
    (diaDay === DiaType.NOV_26 && isWeekday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isWeekday(setYear, 11, 27))||(diaDay === DiaType.NOV_28 && isWeekday(setYear, 11, 28))||(diaDay === DiaType.NOV_29 && isWeekday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isWeekday(setYear, 11, 30)))) return true;


    return false;
}

function changeDiaType() {
    switch (diaDay) {
        case DiaType.WEEKDAY: diaDay = DiaType.HOLIDAY; break;
        case DiaType.HOLIDAY: diaDay = DiaType.OCT_01; break;
        case DiaType.OCT_01: diaDay = DiaType.OCT_02; break;
        case DiaType.OCT_02: diaDay = DiaType.OCT_03; break;
        case DiaType.OCT_03: diaDay = DiaType.OCT_04; break;
        省略
        case DiaType.NOV_30: diaDay = DiaType.WEEKDAY; break;
    }

    updateDisplayDiaDay();
    getTimeTable();
    setNewTime(setSecondSum);
    drawTrain();
    resetTimetableSpace();
}
0Like

Comments

  1. 以下の部分は同じ dayJudge(setYear, setMonth, setDate, setDay) を繰り返し呼んでいるだけなので、 else if の分岐には絶対に入りません(つまり diaDayDiaType.SUNDAYDiaType.HOLIDAY にしかなりません)。これで正常に動くとは思えませんが、まあ納得しているならいいんでしょう。

                        if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SUNDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.MONDAY;  // 週末の処理
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.TUESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEDNESDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.THURSDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.FRIDAY;
                        } else if (dayJudge(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.SATURDAY;
                        } else if (isWeekend(setYear, setMonth, setDate, setDay)) {
                            diaDay = DiaType.WEEKEND;  // 週末の処理
                        } else {
                            diaDay = DiaType.HOLIDAY;
                        }
    

すみません、先ほどのも早とちりでした。
しかし、一つ一つ泥臭くても丁寧にコードを入力することで、下のようなコードが出来上がり、無事、挙動エラーもなくなりました。
javascript習得の道に近道や王道はないと考えた方がよろしいかと。
一度に進むとかえって一気にエラー地獄に陥ってしまいますから。
遠回りでも確実に踏み出すことがjavascriptなんだと気が付きました。
もし、ご異議がなければ勝手ながらクローズとさせていただきますが、
ご異議がある方はいらっしゃいますか。
ちなみに自分は今のコードに満足しております。

function isWeekday(year, month, day) {
    const dayOfWeek = new Date(year, month - 1, day).getDay();
    return dayOfWeek >= 1 || dayOfWeek <= 5;
}
function isHoliday(year, month, day) {
    const dayOfWeek = new Date(year, month - 1, day).getDay();
    return dayOfWeek === 0 || dayOfWeek === 6; // 0 is Sunday, 6 is Saturday
}

function isSunday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() === 0;
}

function isWednesday(year, month, day) {
    const date = new Date(year, month - 1, day);
    return date.getDay() === 3;
}


function judgeTrainRunningDay(value) {
    if (value === "全日") return true;

    if ((value === "平日" && ((diaDay === DiaType.WEEKDAY)||((diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isWeekday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isWeekday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isWeekday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isWeekday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWeekday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isWeekday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isWeekday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isWeekday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isWeekday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isWeekday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isWeekday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isWeekday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isWeekday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isWeekday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isWeekday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isWeekday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isWeekday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isWeekday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isWeekday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isWeekday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isWeekday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isWeekday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isWeekday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isWeekday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isWeekday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isWeekday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isWeekday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isWeekday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isWeekday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isWeekday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isWeekday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isWeekday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isWeekday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isWeekday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isWeekday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isWeekday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isWeekday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isWeekday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isWeekday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isWeekday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isWeekday(setYear, 11, 25))||
        (diaDay === DiaType.NOV_26 && isWeekday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isWeekday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isWeekday(setYear, 11, 30)))))) return true;
    if ((value === "土曜・休日運休" && ((diaDay === DiaType.WEEKDAY)||((diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isWeekday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isWeekday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isWeekday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isWeekday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWeekday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isWeekday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isWeekday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isWeekday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isWeekday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isWeekday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isWeekday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isWeekday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isWeekday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isWeekday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isWeekday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isWeekday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isWeekday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isWeekday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isWeekday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isWeekday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isWeekday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isWeekday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isWeekday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isWeekday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isWeekday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isWeekday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isWeekday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isWeekday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isWeekday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isWeekday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isWeekday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isWeekday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isWeekday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isWeekday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isWeekday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isWeekday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isWeekday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isWeekday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isWeekday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isWeekday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isWeekday(setYear, 11, 25))
        (diaDay === DiaType.NOV_26 && isWeekday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isWeekday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isWeekday(setYear, 11, 30)))))) return true;
    if ((value === "毎日運転" && ((diaDay === DiaType.WEEKDAY)||((diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isWeekday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isWeekday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isWeekday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isWeekday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isWeekday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isWeekday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isWeekday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isWeekday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWeekday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isWeekday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isWeekday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isWeekday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isWeekday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isWeekday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isWeekday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isWeekday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isWeekday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isWeekday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isWeekday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isWeekday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isWeekday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isWeekday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isWeekday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isWeekday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isWeekday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isWeekday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isWeekday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isWeekday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isWeekday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isWeekday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isWeekday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isWeekday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isWeekday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isWeekday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isWeekday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isWeekday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isWeekday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isWeekday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isWeekday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isWeekday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isWeekday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isWeekday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isWeekday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isWeekday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isWeekday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isWeekday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isWeekday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isWeekday(setYear, 11, 25))||
        (diaDay === DiaType.NOV_26 && isWeekday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isWeekday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isWeekday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isWeekday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isWeekday(setYear, 11, 30)))))) return true;

    if ((value === "土・休日" && ((diaDay === DiaType.HOLIDAY)||((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isHoliday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isHoliday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isHoliday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isHoliday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isHoliday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isHoliday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isHoliday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isHoliday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isHoliday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isHoliday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isHoliday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isHoliday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isHoliday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isHoliday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isHoliday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isHoliday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isHoliday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isHoliday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isHoliday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isHoliday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isHoliday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isHoliday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isHoliday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isHoliday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isHoliday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isHoliday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isHoliday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isHoliday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isHoliday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isHoliday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isHoliday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isHoliday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isHoliday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isHoliday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isHoliday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isHoliday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isHoliday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isHoliday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||
        (diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))))) return true;
        
    if ((value === "土曜・休日" && ((diaDay === DiaType.HOLIDAY)||((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isHoliday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isHoliday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isHoliday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isHoliday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isHoliday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isHoliday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isHoliday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isHoliday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isHoliday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isHoliday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isHoliday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isHoliday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isHoliday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isHoliday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isHoliday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isHoliday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isHoliday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isHoliday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isHoliday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isHoliday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isHoliday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isHoliday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isHoliday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isHoliday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isHoliday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isHoliday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isHoliday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isHoliday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isHoliday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isHoliday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isHoliday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isHoliday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isHoliday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isHoliday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isHoliday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isHoliday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isHoliday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isHoliday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||
        (diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))))) return true;
    if ((value === "土・休日" && ((diaDay === DiaType.HOLIDAY)||((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isHoliday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isHoliday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isHoliday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isHoliday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isHoliday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isHoliday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isHoliday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isHoliday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isHoliday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isHoliday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isHoliday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isHoliday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isHoliday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isHoliday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isHoliday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isHoliday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isHoliday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isHoliday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isHoliday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isHoliday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isHoliday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isHoliday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isHoliday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isHoliday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isHoliday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isHoliday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isHoliday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isHoliday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isHoliday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isHoliday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isHoliday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isHoliday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isHoliday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isHoliday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isHoliday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isHoliday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isHoliday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isHoliday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))
        (diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))))) return true;
    if ((value === "土曜・休日運転" && ((diaDay === DiaType.HOLIDAY)||((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isHoliday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isHoliday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isHoliday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isHoliday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isHoliday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isHoliday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isHoliday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isHoliday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isHoliday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isHoliday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isHoliday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isHoliday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isHoliday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isHoliday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isHoliday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isHoliday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isHoliday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isHoliday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isHoliday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isHoliday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isHoliday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isHoliday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isHoliday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isHoliday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isHoliday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isHoliday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isHoliday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isHoliday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isHoliday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isHoliday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isHoliday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isHoliday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isHoliday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isHoliday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isHoliday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isHoliday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isHoliday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isHoliday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))
        (diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))))) return true;
    if ((value === "毎日運転" && ((diaDay === DiaType.HOLIDAY)||((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||(diaDay === DiaType.OCT_04 && isHoliday(setYear, 10, 4))||(diaDay === DiaType.OCT_05 && isHoliday(setYear, 10, 5))||
        (diaDay === DiaType.OCT_06 && isHoliday(setYear, 10, 6))||(diaDay === DiaType.OCT_07 && isHoliday(setYear, 10, 7))||(diaDay === DiaType.OCT_08 && isHoliday(setYear, 10, 8))||(diaDay === DiaType.OCT_09 && isHoliday(setYear, 10, 9))||(diaDay === DiaType.OCT_10 && isHoliday(setYear, 10, 10))||
        (diaDay === DiaType.OCT_11 && isHoliday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isHoliday(setYear, 10, 12))||(diaDay === DiaType.OCT_13 && isHoliday(setYear, 10, 13))||(diaDay === DiaType.OCT_14 && isHoliday(setYear, 10, 14))||(diaDay === DiaType.OCT_15 && isHoliday(setYear, 10, 15))||
        (diaDay === DiaType.OCT_16 && isHoliday(setYear, 10, 16))||(diaDay === DiaType.OCT_17 && isHoliday(setYear, 10, 17))||(diaDay === DiaType.OCT_18 && isHoliday(setYear, 10, 18))||(diaDay === DiaType.OCT_19 && isHoliday(setYear, 10, 19))||(diaDay === DiaType.OCT_20 && isHoliday(setYear, 10, 20))||
        (diaDay === DiaType.OCT_21 && isHoliday(setYear, 10, 21))||(diaDay === DiaType.OCT_22 && isHoliday(setYear, 10, 22))||(diaDay === DiaType.OCT_23 && isHoliday(setYear, 10, 23))||(diaDay === DiaType.OCT_24 && isHoliday(setYear, 10, 24))||(diaDay === DiaType.OCT_25 && isHoliday(setYear, 10, 25))||
        (diaDay === DiaType.OCT_26 && isHoliday(setYear, 10, 26))||(diaDay === DiaType.OCT_27 && isHoliday(setYear, 10, 27))||(diaDay === DiaType.OCT_28 && isHoliday(setYear, 10, 28))||(diaDay === DiaType.OCT_29 && isHoliday(setYear, 10, 29))||(diaDay === DiaType.OCT_30 && isHoliday(setYear, 10, 30))||
        (diaDay === DiaType.OCT_31 && isHoliday(setYear, 10, 31))||
        (diaDay === DiaType.NOV_01 && isHoliday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_04 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_05 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_06 && isHoliday(setYear, 11, 6))||(diaDay === DiaType.NOV_07 && isHoliday(setYear, 11, 7))||(diaDay === DiaType.NOV_08 && isHoliday(setYear, 11, 8))||(diaDay === DiaType.NOV_09 && isHoliday(setYear, 11, 9))||(diaDay === DiaType.NOV_10 && isHoliday(setYear, 11, 10))||
        (diaDay === DiaType.NOV_11 && isHoliday(setYear, 11, 11))||(diaDay === DiaType.NOV_12 && isHoliday(setYear, 11, 2))||(diaDay === DiaType.NOV_13 && isHoliday(setYear, 11, 3))||(diaDay === DiaType.NOV_14 && isHoliday(setYear, 11, 4))||(diaDay === DiaType.NOV_15 && isHoliday(setYear, 11, 5))||
        (diaDay === DiaType.NOV_16 && isHoliday(setYear, 11, 16))||(diaDay === DiaType.NOV_17 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_18 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_19 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_20 && isHoliday(setYear, 11, 20))||
        (diaDay === DiaType.NOV_21 && isHoliday(setYear, 11, 21))||(diaDay === DiaType.NOV_22 && isHoliday(setYear, 11, 22))||(diaDay === DiaType.NOV_23 && isHoliday(setYear, 11, 23))||(diaDay === DiaType.NOV_24 && isHoliday(setYear, 11, 24))||(diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||
        (diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 29))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))))) return true;
以下途中まで省略です。
    if (value === "10月10→12日・11月1→3日の水曜日運転" && ((diaDay === DiaType.OCT_10 && isWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && isWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && isWednesday(setYear, 10, 12))||
    (diaDay === DiaType.NOV_01 && isWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && isWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && isWednesday(setYear, 11, 3)))) return true;
    if (value === "10月10→12日・11月1→3日の水曜日運休" && ((diaDay === DiaType.OCT_10 && !isWednesday(setYear, 10, 10))||(diaDay === DiaType.OCT_11 && !isWednesday(setYear, 10, 11))||(diaDay === DiaType.OCT_12 && !isWednesday(setYear, 10, 12))||
    (diaDay === DiaType.NOV_01 && !isWednesday(setYear, 11, 1))||(diaDay === DiaType.NOV_02 && !isWednesday(setYear, 11, 2))||(diaDay === DiaType.NOV_03 && !isWednesday(setYear, 11, 3)))) return true;    // 2月17日が日曜日であるかを確認
    if ((value === "10月4日→11月24日を除く土曜・休日運転" && ((diaDay === DiaType.HOLIDAY)||((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1))||(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2))||(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3))||
        (diaDay === DiaType.NOV_25 && isHoliday(setYear, 11, 25))||
        (diaDay === DiaType.NOV_26 && isHoliday(setYear, 11, 26))||(diaDay === DiaType.NOV_27 && isHoliday(setYear, 11, 17))||(diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18))||(diaDay === DiaType.NOV_29 && isHoliday(setYear, 11, 19))||(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))))) return true;

    return false;
}


0Like

Comments

  1. diaDay === DiaType.NOV_28 && isHoliday(setYear, 11, 18)
    

    この部分、11月 28日 の日付に関する条件なのに 11月 18日 が祝日かどうかチェックしているのは明らかにおかしいですね。同じ間違いが何箇所かあります。

    それ以前に条件全体の構成が根本的に変な気がしますが、正しい挙動が説明されていないので確実なことはいえません。

    なんにせよ、あなたの問題が解決したと判断した時点でクローズなさるのがよいと思います。誰も反対はしないでしょう。

Your answer might help someone💌