プログラミング初心者です。。。
初歩的なご質問ですいません。
ネットショップでページに自動で更新日を表示したいと考えています。
コチラでご教授いただき、表示するところまではできたのですが、肝心な定休日についての動作を忘れていました。。。
例えば
・毎週日曜日
・指定した日付(緊急の定休日や祝日など)
この二つの条件どちらかの場合、更新を行わない。というスクリプトを組みたいのです。。。
自分で色々調べてやってみたのですがどうも理解できず・・・
どうかご教授をお願いします><
ちなみに現在完成しているのはこんな感じです↓
(毎朝10時になったら更新されるようになっています。)
<SCRIPT type="text/javascript">
<!--
date = new Date();
y = date.getFullYear();
m = date.getMonth() + 1;
d = date.getDate();
var h = date.getHours();
if (h < 10) {
d -= 1;
}
if (m < 10) { m = "0" + m; }
if (d < 10) { d = "0" + d; }
document.write(y + "/" + m + "/" + d);
// -->
</SCRIPT>
どうぞよろしくお願いします;;
A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
ていせい
× 私は貴方に負けないく、やらかしている
を、
○ 私は貴方に負けないくらい、やらかしている
に。
さて、きほんにかえって。
そもそも、せいしきに、こうしんもしていないのに、それをひょうじだけ、ごまかすのは、いかがなものだろう。
そもそも(その2)、すくりぷとでごまかすのではなく、さーばーがわでやるべきだろう。
いや~ここまでてんかしておいて、いうのもなんなのですが・・・
(やらかした数+=3)
No.8
- 回答日時:
moyokocchiさん
回答ではない書き込みお許しください
babu_babooさん
別に自分は悪意を感じてはいません。
ネタのようなものだと思っています。
ベストアンサーのポイントを欲しがっていらっしゃるなんてことも全く考えていません。
ただ自分の回答が本当にひどかったので、指摘していただいたbabu_babooさんに一言いいたかっただけですので。
他の回答者様、閲覧されている皆様、スレ汚し申し訳ありませんm(__)m
No.7
- 回答日時:
> いや~な空気
そう感じたなら申し訳ない。ごめんなさい。
yamada_g さん、
総じて悪意など更々ないのだけれど、貴方に一言、言っておく!!
「アホな回答」の数では、私は貴方に負けないく、やらかしている。きっと桁が違う。(笑)
(86400とか、24*60*60 とかもを使いたくなかっただけ。)
別に、ベストアンサーのポイントが、欲しいわけじゃ~ないんだ。(笑)
No.6
- 回答日時:
表示されるひにちを営業日だけにしたいってことでしょうか?
当然、2日前とか3日前とかになる可能性もあるということですよね?
一方で、10時以前の-1日というのは、営業日なのかあるいは本当の「前日」で非営業日でもそのほうがいいのだろうか?
どっちなのかわからないので、そのへんは調整していただくとして…
営業日かどうか判定する関数を別に作っておいて(仮にholidayとします)、
while( holiday(date) ) date.setDate(date.getDate()-1);
みたいにして、営業日になるまで日付けを戻してあげれるだけでよろしいかと。
その後の、表示する部分などはそのまま。
(holidayは休日(=非営業日)だとtrueを返す関数)
holidayの部分は、
曜日だけならスクリプトでそのまま判定できますが、祝日は国によって違うので作成しないとなりません。
(誰かが日本の休日用につくったものが、あるかも知れませんけど)
規則が日にちで決まっているものと、○月の第何月曜などで決まっているものと、「祝日と祝日の間の日」で決まっているものとありますが、その規則を盛り込むで作成するか、単純に日にち指定にしておいて毎年更新するようにするか…
でも、「定休日」の部分はこれからもはずれるので、その部分については自作する必要があります。
例えば、土、日を休日と判断するだけの関数の場合の例
function holiday(date){
var week = date.getDay();
return (week==0 || week==6);
}
No.5
- 回答日時:
まぁ分からなくもないけど、なんだかいや~な空気だね^^
(function(date, arr) {
var d = date.getDate();
var day = date.getDay();
var h = date.getHours();
for (var i = 0, l = arr.length; i < l; i++) {
if ((i === 0 && arr[i] === day) || arr[i] === d || h < 10) {
date.setTime(date.getTime() - 86400000); // 24時間前の時間値をセット
break;
}
}
var y = date.getFullYear();
var m = date.getMonth() + 1;
if (d !== date.getDate()) d = date.getDate(); // 変更されていたらそれを使う
if (m < 10) { m = "0" + m; }
if (d < 10) { d = "0" + d; }
document.write(y + "/" + m + "/" + d);
})(new Date(), [0, 3, 13, 23]); // [日曜日, 指定日, ...]
No.1で指摘のあった前日の取得部分以外は単純な比較だけだし、難しくないでしょ。
No.4
- 回答日時:
moyokocchiさん
前回の回答で全然考慮不足のコードを書いてしまって申し訳ありませんでした。
babu_babooさん
それって自分のことですよね。
アホな回答でBAもらってしまい本当に本当にすみませんでした。(バッドアンサーですね・・・)
No.3
- 回答日時:
> どうしたらいいですか
えっ! そりゃ~「ベストアンサー」に、かがやいたひとが、その「名」にかけて、こたえるのでは?
setInterval を、どうりようしてよいのか、わかりませんでした。
var hdayList = {
110: true,
429: true,
503: true,
504: true,
505: true,
1103: true,
1123: true,
1223: true
};
function previousHolidayCount (d) {
var cnt = 0;
var cmp;
var sun;
do {
sun = (d.getDay () == 0);
hdy = hdayList[(d.getMonth () + 1) * 100 + d.getDate ()];
if (! sun)
if (! hdy)
return cnt;
cnt += 1;
d.setTime (d - Date.UTC (1970, 0, 2));
} while (true);
}
var hcnt;
var date = new Date;
if (date.getHours () < 10)
date.setTime (date - Date.UTC (1970, 0, 2));
if (hcnt = previousHolidayCount (new Date (date)))
date.setTime (date - Date.UTC (1970, 0, 1 + hcnt));
var y = date.getFullYear ();
var m = date.getMonth () + 1;
var d = date.getDate ();
document.write([ y, (m < 10 ? '0': '') + m, (d < 10 ? '0': '') + d].join ('/'));
No.2
- 回答日時:
こちらの
http://www.hoge256.net/2007/08/64.html
「n日後、n日前の日付を求める」あたりが参考になると思います。
後、「setInterval」か「setTimeout」を使えば、表示を自動更新できますね。
No.1
- 回答日時:
だからね、1にちのひはどうするの?0にちでよいの?
そこもかんがえようね。
この回答への補足
<SCRIPT type="text/javascript">
var date = new Date;
if (date .getHours () < 10)
date.setTime (date - Date.UTC (1970, 0, 2));
var y = date.getFullYear ();
var m = date.getMonth () + 1;
var d = date.getDate ();
document.write([ y, (m < 10 ? '0': '') + m, (d < 10 ? '0': '') + d].join ('/'));
</SCRIPT>
以前ご教授いただいたコチラに変えました!当初は意味がわからず・・・すいませんでした;;
あ!!
なるほどです!!盲点でした・・・;;ありがとうございます。
そこは書き換えるとして休日はどうしたらいいですか・・・?すいませんご教授願います。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- JavaScript gasについて 1 2022/05/31 21:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) 「休日取得希望日」を申請したらシフト表に色付け 1 2022/04/17 14:22
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
html javascript リンク先アド...
-
HTMLで作った時報アプリが動き...
-
GASでundefinedエラーが出ます
-
var exports = exports || {}; ...
-
翌月を取得するGASが分かりません
-
なぜmatchメソッドがエラーにな...
-
javascriptカウントダウン終了...
-
JavaScriptでテーブル内?に矢...
-
引数なしの関数で疑問です
-
C#OpenCv V4にのエラーに関する...
-
今日からnヶ月後(前)
-
リンク集をCSVファイルで管理し...
-
カンマで終わってるのはセミコ...
-
APIを使って埋め込んだグーグル...
-
javascriptでテーブルに追加し...
-
アルファベットABCD…をスマート...
-
JScriptでExcelの全シートにア...
-
gas スプレッドシートがアクテ...
-
ASP.NETのコントロールの値をJa...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ローカルにあるファイルを検索...
-
JavaScriptで文字列の特定文字...
-
ジェネレーターの作り方
-
javascriptでiframeのURL変更は?
-
なぜmatchメソッドがエラーにな...
-
ASP.NET MVCでObjectをjsに渡す
-
gas スプレッドシートがアクテ...
-
Google Apps Script で添付ファ...
-
html javascript リンク先アド...
-
ASP.NETのコントロールの値をJa...
-
javascriptでテーブルに追加し...
-
C言語の質問です HTMLでこのよ...
-
JavaScriptで決まった「時刻」...
-
翌月を取得するGASが分かりません
-
特定のclassを表示、非表示にする
-
どうすれば良いでしょうか?
-
HTMLにWSHを組み込む
おすすめ情報