• ベストアンサー

特定の日付に対して、画面の表示がなされるように

特定の日付に対して、画面の表示がなされるようにしたいです。 例えば、10月12日、11月3日、11月24日に実際になったときにだけ、画面に表示されるようにして、それ以外の日は、 画面上に表示されないというのは可能ですか。 以下を参考にしています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下のjavascriptの文章を試しましたが、全然うまくいきませんでした。 僕は天才じゃないため、断片的な情報から組み合わせて、 一つのものを作り上げる能力はありません。 ですので、断片的な情報ではなく、 全部書いてくださるとありがたいです。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; }

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1523/2217)
回答No.3

>こでもうまくいきませんでしたよ。😡 そりゃあ、"diagram.A=true;"なんてことをしてうまく行くわけありません。 その怒りの絵文字は誰に対する怒りですか。回答者に対してであればお門違いもいいところです。そんなことを書くように指示した回答者はいないはずなので、プログラムが思ったように動作しないのは質問者さんの自己責任です。 diagram.Aには整数の3という値が入っていたのに、それをtrueというboolean型の値で書き換えることによってどういう結果が得られると考えていたのか、説明にしてみてください。それが分かれば、質問者さんが何を勘違いしているのかを指摘できるかもしれません。 回答No.1にも書いたとおり、質問者さんは画面表示部分のコードが開示されていないので、「Aダイヤの処理をここに書く」の部分に何を書けばいいのかをこちらから示すことはできません。 平日ダイヤと土休日ダイヤを表示し分けることは既にできている前提で回答していましたが、その画面表示部分のコードを見せてください。

その他の回答 (2)

  • _kappe_
  • ベストアンサー率68% (1523/2217)
回答No.2

>10月12日であれば、(month == 10 && date == 12)、11月3日であれば、(month == 11 && date == 3)が入るはずなんです。 その判定はdayJudge()関数の中にありますよね。10月12日、11月3日、11月24日の場合はdayJudge()関数がdiagram.Aを返すので、それを使ってswitch文で処理すればいいだけです。switchの代わりにif文を使ってif (dayJudge(year, month, date, day) == diagram.A) { 処理内容 }のように書いても構いません。 それとももしかして、10月12日と11月3日と11月24日でそれぞれ別の処理をしたいのでしょうか。その場合は、Aダイヤをさらに分類して新しいダイヤ種別を作ってください。

sembokulove
質問者

補足

こでもうまくいきませんでしたよ。😡 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; } switch (dayJudge(year, month, date, day)) { case diagram.WeekDay: diagram.Weekday=true; break; case diagram.Holiday: diagram.holiday=true; break; case diagram.A: diagram.A=true; break; case diagram.B: diagram.B=true; break; case diagram.C: diagram.C=true; break; }

  • _kappe_
  • ベストアンサー率68% (1523/2217)
回答No.1

「可能ですか」という質問へは「可能です」と答えますが、具体的なコードを回答に書くことはできません。質問文の中には画面表示部分のコードが示されていないからです。 特定の日付でなければ、平日ダイヤと土休日ダイヤで異なる表示にすることはできているのでしょうか。その部分と同じようにして特定の日専用のダイヤの表示を行えばいいはずです。 ダイヤの種類によってswitch文で場合分けをする例: switch (dayJudge(year, month, date, day)) { case diagram.WeekDay: 平日用ダイヤの処理をここに書く break; case diagram.Holiday: 土休日用ダイヤの処理をここに書く break; case diagram.A: Aダイヤの処理をここに書く break; case diagram.B: Bダイヤの処理をここに書く break; case diagram.C: Cダイヤの処理をここに書く break; }

sembokulove
質問者

補足

いやいや、絶対に10月12日であれば、(month == 10 && date == 12)、11月3日であれば、(month == 11 && date == 3)が入るはずなんです。 そのような場合、コードはどうなるのでしょうか。 先ほどのswitch文だけでは申し訳ございません。 少々説明が不足のようです。

関連するQ&A

  • if関数で、aまたはbまたはcという選択できますか

    if関数で、aまたはbまたはcという選択できますか。 ver num=1; if(x=1||x=3||x=5){ console.log("true"); } else{ console.log("folse"); }。 といった書き方はできませんか。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; } ができなくて困っています。

  • jsでフラグ型をenum型に変えたい。

    以下のjavascript文があります。 [code] //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月?金なら立てる if(day >= 1 && day <= 5) weekdayFlag = day >= 1 && day <= 5;   else if(day==6) weekdayFlag2 = day == 6 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 == 2015 && month == 3 && date == 21) weekdayFlag = false; return weekdayFlag; } [/code] をフラグ型から、enum型に変更できませんか。 フラグではAもしくはBといった2通りの回答しかございませんので、 3つめの分岐は作ることはシステム上無理なのです。 enum型なら、パターンはある程度余裕(無限じゃないかも)をもたせることできるからです。

  • C++で日付のプログラミング

    前回も同じ質問をして、自分なりに直してみたのですが、どうもうまく動作しません。 長くなりますが、教えてください。 日付のエラー処理を完全にするというもので、 次のような仕様を満たすようにMyDateクラスを修正せよ。というものです。 1.月、日共に初期値は1とする。 2.月、日の状態を出力するメンバ関数print()を追加する。 3.changeDay関数において、monthに入っている値に対応して適切なエラー処理を行う。    4月の時は日は30まで、5月の時は31まで、みたいな感じです。 4.changeMonth関数において、変更しようとする月に対しdayに入っている値が大きすぎる場合、dayを変更後の最後の日に修正するようにする。例えば、5月31日に設定されている時に、changeMonth(2)が呼ばれた時、monthに2を、dayに28を代入する。 5.うるう年は考慮しなくていい。 #include <stdio.h> class MyDate{ private: int month, day; public: void Date(int, int); void changeMonth(int); //「月」変更用関数 void changeDay(int); //「日」変更用関数 void print(); }; void MyDate::Date(int argMonth,int argDay) { argMonth = 1; argDay = 1; } void MyDate::changeMonth(int argMonth)//メンバ関数(changeMonth)の定義 { if(argMonth >= 1 && argMonth <= 12){ //1~12のときだけ値を更新 month = argMonth; } } void MyDate::changeDay(int argDay)//メンバ関数(changeDay)の定義 { //1~31が入力された場合のみ値を更新 if(argDay >= 1 && argDay <= 31){ day = argDay; } if(month == 1,day > 31){ printf("DATE = %d/%d\n",1,31); }else if(month == 2,day > 28){ printf("DATE = %d/%d\n",2,28); }else if(month == 3,day > 31){ printf("DATE = %d/%d\n",3,31); }else if(month == 4,day > 30){ printf("DATE = %d/%d\n",4,30); }else if(month == 5,day > 31){ printf("DATE = %d/%d\n",5,31); }else if(month == 6,day > 30){ printf("DATE = %d/%d\n",6,30); }else if(month == 7,day > 31){ printf("DATE = %d/%d\n",7,31); }else if(month == 8,day > 31){ printf("DATE = %d/%d\n",8,31); }else if(month == 9,day > 30){ printf("DATE = %d/%d\n",9,30); }else if(month == 10,day > 31){ printf("DATE = %d/%d\n",10,31); }else if(month == 11,day > 30){ printf("DATE = %d/%d\n",11,30); }else if(month == 12,day > 31){ printf("DATE = %d/%d\n",12,31); }else{ printf("DATE = %d/%d\n",month,day); } } int main(int, char **){ MyDate today; today.changeMonth(12); today.changeDay(35); return 0; } それで、 初期化するコンストラクタなんですが、 void MyDate::Date~ のような感じでいいのでしょうか? argMonthとかargDayとかいらないですか?ただMonthとDayだけでいいでしょうか? print()のメンバ関数なんですが、条件式の中に組込むとメンバ関数がいらないんじゃないか、と思ってしまうのですが、条件式の最後のelse{~}の中身を入れればいいでしょうか? あと、today.changeMonth(12); today.changeDay(35); と入れると、12/-858993460とでてしまうのですが、 条件式が間違ってるんでしょうか? 質問が多くてすみません。 よろしければ、回答よろしくお願いします。

  • 列車位置情報のフラグ分岐をやめたいです。

    列車走行位置で、フラグによる分岐から、enum分岐のint文にしたいです。 以下のプログラムを参考にして作っています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下は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; return weekdayFlag; } 僕が具体的に行ったのは、フラグを3つ以上に分けることでした。 しかし、フラグを分けても、ことは解決しかなったです。 フラグというのはBoolean型の一種で、 真偽値を返すものであって、 AorBにしかならないのです。 以下はjavaにおけるbooleanの説明ですが、 javascriptでも同じことがいえると思います。 https://www.sejuku.net/blog/41241 そこで、抜本的な解決策として、enum型のint文があるのを知りました。 https://qiita.com/BMJr/items/5ec834e6513fe5f0ad87 上記のenum型のint文にして、先ほどのjavasc 僕には天才ではないため、 断片的な情報から、一つの情報をあびきだすのはできないです。 どうか、ご教授願えたら幸いです。 フラグだと、1個フラグを作って終わりです。 理由はonかoffのどちらかしかないからです。 実際、土日以外の切り替えの構文を書こうとすると知識がないせいか、切り替えボタンの切り替えができなかったり、真っ白になったりしました。 一方、enum型やそれに付随するint文に注目する理由は、 選択肢が3つ以上あるときにも使えるということです。 例えば、1月1日にはAダイヤ、1月2日にはBダイヤ、1月3日にはCダイヤに切り替わるようなプログラムにしたいのです。 jrの特急列車だと、土日ダイヤのほかに特定の日付だけ運転する多客期とかってのがありますから、それを実現したいのです。 全文書いてもらわないと困ります。 これが答えられないと、日本のプログラマーは世界に立ち遅れてもしょうがないと思います。😡

  • 行の時の日付表示の仕方

    いつもお世話になります。 WindowsXP Excell2003です。 列での日付の表示で 月ごとに変わる 31、30、28、29日の日付を下記の式で対応をしています。 B1 2010 C1 1 A1 =DATE(B1,C1,1) 2010/1/1 A2 =IF(MONTH(A$1+ROW(A1)-1)=MONTH(A$1),A$1+ROW(A1)-1,"") 01 A3 =IF(MONTH(A$1+ROW(A2)-1)=MONTH(A$1),A$1+ROW(A2)-1,"") 02 ・ ・ ご教示をいただきたいのは 行で A2~ 日付を表示するときの数式です。 B1 2010 C1 1 A1 =DATE(B1,C1,1) 2010/1/1 A2 ~ よろしく御願いします。

  • 列車の走行位置プログラムを作りたいです。

    2022/12/28 13:23 自分は、列車の現在時刻をもとにアニメーションを描画するプログラミングを考案したいなぁと考えております。 以下のサイトを参照しています。 http://r113.web.fc2.com/p/viewer/nankai ... index.html 以下のサイトだと、平日ダイヤと土・休日ダイヤの割り振りしかできません。 フラグをいじってみてわかったことですが、これは、曜日単位で分けるものであり、 日付単位で分けることができません。 <code> //平日ダイヤか土・休日ダイヤかを判定する 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; return weekdayFlag; } </code> 自分は初歩的なプログラミングしかできませんが、 <code> //月?金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; </code> の部分が、いわば、曜日で分かれるように設定してあることに気が付きました。 これを個別の日にち単位で分けるとしたら、どんなプログラムが考えられるでしょうか。 自分は3つ以上のダイヤパターンを考えたいです。

  • 列車走行位置で、フラグによる分岐から変えたいです。

    列車走行位置で、フラグによる分岐から、enum分岐のint文にしたいです。 以下のプログラムを参考にして作っています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下は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; return weekdayFlag; } 僕が具体的に行ったのは、フラグを3つ以上に分けることでした。 しかし、フラグを分けても、ことは解決しかなったです。 フラグというのはBoolean型の一種で、 真偽値を返すものであって、 AorBにしかならないのです。 以下はjavaにおけるbooleanの説明ですが、 javascriptでも同じことがいえると思います。 https://www.sejuku.net/blog/41241 そこで、抜本的な解決策として、enum型のint文があるのを知りました。 https://qiita.com/BMJr/items/5ec834e6513fe5f0ad87 上記のenum型のint文にして、先ほどのjavascriptの文章を書き直すことって可能でしょうか。 僕には天才ではないため、 断片的な情報から、一つの情報をあびきだすのはできないです。 どうか、ご教授願えたら幸いです。

  • javascriptのフラグは分岐可能ですか。

    //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月〜金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; 以下はフラグの使い方の一例です。 フラグの書き方は、恐らくvar 任意名Flag = True;という形になると思います。 これをさらに分岐するとき、どういう風な書き方をするのでしょうか。 それとも、別なプログラムが必要ですか。

  • excel 月日から第○週間目と表記する関数

    A1セルに2018/5/25と入力します。 B2に以下の関数 =IF(A1="","",INT((DAY(A1)+WEEKDAY(A1-DAY(A1)+1)-2)/7)+1) 結果 4(週間目)が出ました。 次に MONTH(A1)&"月第"&"週目" 結果 5月第周目 これを 「5月第4週間目」と表記したいのです。 =IF(A1="","",MONTH(A1)&"月第",INT((DAY(A1)+WEEKDAY(A1-DAY(A1)+1)-2)/7)+1&"週目") 結果 「この関数に対して、多すぎる引数が入力されています」とエラーメッセージが出ます。 どこが間違っているのでしょうか? 宜しくお願いします。

  • 指定した日付で画像を切り替え

    タイトルどおり…。 日付で画像を切り替えしようと思っています。 それで、ソースは下記のものです。 <!--// // function fncGraphicChangerByDate() { var i; var month; var day; var today; var maxFile = 4; var date = new Date(); var graphics_data = new Array(maxFile); var graphics_path = new Array(maxFile); if ((month = (date.getMonth() + 1)) < 10) { month = "0" + month; } else { month += ""; } if ((day = date.getDate()) < 10) { day = "0" + day; } else { day += ""; } today = month + day; graphics_data[0] = "0301"; graphics_path[0] = "images/7.jpg"; graphics_data[1] = "0601"; graphics_path[1] = "images/8.jpg"; graphics_data[2] = "0901"; graphics_path[2] = "images/9.jpg"; graphics_data[3] = "1201"; graphics_path[3] = ".images/73.jpg"; for (i = 0; i < maxFile; i++) { if (graphics_data[i] > today) { if (i == 0) { i = maxFile; } break; } } i--; document.write("<IMG SRC=\"" + graphics_path[i] + "\">"); } //--> </SCRIPT> 実は、画像のサイズを指定したいのですが…。 どこに何を入れたらいいのか分かりません。 何か、イイ方法はありませんか?