現在の月頭の日の曜日を求める方法はないでしょうか?
例)現在は1月なので1/1の曜日 => 火曜

このQ&Aに関連する最新のQ&A

A 回答 (3件)

グレゴリー暦の「ツェラーの公式」を使うのが常套手段です。


西暦y年m月d日の曜日は、
( y + y/4 -y/100 + y/400 + (( 13 * m + 8 ) / 5 ) + d ) %7 )
で計算して結果が「0」なら日曜日、「1」なら月曜日・・・「6」なら土曜日になります。
↓実際の例です。
sub getDayOfWeek{
my($year, $month, $day) = @_;
# 1月または2月の場合は前年の13月および14月とみなす
if ($month <= 2) {
--$year;
$month += 12;
}
return (($year + int($year/4) - int($year/100) + int($year/400)
+ int((13*$month + 8)/5) + $day) % 7);
}

ただし、1582年10月15日(金)午後以後にしか有効ではありません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
サブルーチンまで丁寧に紹介していただき
大変助かりました。
また何かありましたら宜しくお願い致します。

お礼日時:2002/01/07 13:38

すいません!!


最新の質問を見ていてカテゴリーをよく見ずに回答してしまいました...。
    • good
    • 0

手計算でなくてもいいんですよね?


だったらExcelを使うと簡単に調べることができますよ。
セルに日付を入力して、右クリック、セルの書式設定、
ユーザー定義、aaaa としてみてください。
例:
A列 B列=A1
2002/1/1火曜日
2002/2/1金曜日
2002/3/1金曜日
2002/4/1月曜日
2002/5/1水曜日
2002/6/1土曜日
...

ちなみに aaa にすると曜日の一文字だけになりますよ。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
残念ながら今回は使う機会はありませんが、
EXCELでこのような使い方があると勉強になりました。
また何かありましたら宜しくお願い致します。

お礼日時:2002/01/07 13:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q第1月曜日は第1週の月曜日かその月の最初の月曜日か

皆さんに一般論的、社会通念的なところもからめて伺いたいのですが,第1月曜日、第2月曜日といった言葉の「第1、第2」というのは、
「カレンダー上の第1週の月曜日」でしょうか、
それとも「その月の最初の月曜日」なんでしょうか?


今月4月はキレイに日曜頭の1日始まりで誰の目にも4月2日が第1月曜日ですが、翌5月をみると、火曜日1日はじまりです。こういった場合、第1月曜日は「5月7日」であると考える人はいないのでしょうか?
理美容関係の業種等、「その月の最初の月曜日」を「第1月曜日」としてないかなぁと・・・。

Aベストアンサー

↓は、とある美容室の定休日ですが、

http://ameblo.jp/chic-g/entry-10029580890.html
>※ もしその月の第一火曜が1日にあたる場合は
第一月曜が7日となるため
その月の第一月・火曜は7日・8日
となりますのでご注意ください

という但し書きがあります。

通常考えれば、カレンダー通りの解釈になるのではないでしょうか。

Q4桁の整数の前位の足し算を行い結果を表示するプログラムってどう作るんですか? 例)1000=1 99

4桁の整数の前位の足し算を行い結果を表示するプログラムってどう作るんですか?
例)1000=1
9999=36
のような感じです

Aベストアンサー

方法1)
数値を「10進数の文字列」に変換し、1文字ずつ数値に変換して足していく

方法2)
例えば
1234 ÷ 10 = 123 余り4
123 ÷ 10 = 12 余り3
というように、10で割ると、商は一桁右へずれ、元の1の桁が余りとなる。
これを使って、10で割った余りを足していく

方法3)
2とは逆に上から割った商を足していく
1234 ÷ 1000 = 1 余り234
234 ÷ 100 = 2 余り34
...

方法4)
最近のコンピュータなら、メモリも速度も十分なので、4桁=10000個くらいなら、計算結果を予め用意して配列とかに入れておくこともできる。

Q$postflag=1とか$flag=1とかってなにを意味しているの?

CGIでperlを勉強してます。

アンケートフォームや掲示板などのデコード処理の中によく、$postflag=1;とか$flag=0;とか出てくるんですけど、この変数はなにを意味しているのですか?

Aベストアンサー

勉強を始めたばかりの方とお見受けします。
小難しい説明だと理解しづらいですよね。

コーディングの暗黙的ルールとして
flag(フラグ)というものは1か0です。(またはtrue/false、真/偽、on/off、などなど。。。)
つまり2者択一をする場合の判定条件に使われる変数だと思ってください。

例えば性別を選ばせるアンケートフォームがあるとします。
で、女性と回答された場合のみ割引サービスの画面を見せたいって場合などに
フラグを利用します。$seibetsu_flagとでもしましょう。
基本は$seibetsu_flag=0ですが"女性"と選択された場合のみ$seibetsu_flag=1となるよう
プログラムを組んでおけば、後の処理で、


if ($seibetsu_flag=1) {

  ★女性なのでサービス画面表示する処理

}
else {

  ★男性なので通常処理

}


こんな感じで判定することができますよね。
$postflagは名前から察するにNo.3さんの回答の用途だと思いますよ。

勉強を始めたばかりの方とお見受けします。
小難しい説明だと理解しづらいですよね。

コーディングの暗黙的ルールとして
flag(フラグ)というものは1か0です。(またはtrue/false、真/偽、on/off、などなど。。。)
つまり2者択一をする場合の判定条件に使われる変数だと思ってください。

例えば性別を選ばせるアンケートフォームがあるとします。
で、女性と回答された場合のみ割引サービスの画面を見せたいって場合などに
フラグを利用します。$seibetsu_flagとでもしましょう。
基本は$seibets...続きを読む

Q@×× = $q->param('**'); の書き出しについて

このようなチェックボックスを作って
<INPUT type="checkbox" name="q1" value="A">A<br>
<INPUT type="checkbox" name="q1" value="B">B<br>
<INPUT type="checkbox" name="q1" value="C">C<br>

このようなPerlの記述をして
use CGI;
$q = new CGI;
@q1 = $q->param('q1');

このようなCGIの値の書き出し部分はどうしたらいいですか?
print "<td width=300><font size=2>●●{'q2'}</font></td>\n";

上記の
@q1 = $q->param('q1');
に、チェックされた値が格納されているんですよね。
その値を表示させたいと思っています。
いろいろ教えてもらって、ここまでたどり着きました。

Aベストアンサー

#3さんの『お礼』にあるコードですが、間違っているところだけ書いておきます。

原因はCGI.pmと独自の入力処理が、それぞれデータをとり合っていることです。このコード上では、独自の入力処理の部分がSTDINを読み込んでしまうので、CGI.pmからは何も読む事は出来ません。

入力処理には、CGI.pmか独自入力処理の『いずれか』を用いてください。全て書いても使えるのは一つだけです。質問内容から考えられるお勧めは、CGI.pmを利用する事です。(オーバースペックですが、ひとまずそう言うことは考えない方針で。)

コードを見る限り、恐らく『データでコード処理』の部分を全て削除すれば大丈夫だと思います。

QX月Y日がZ曜日なのは西暦何年か

X月Y日がZ曜日なのは西暦何年かをだすにはどうすればいいのでしょう?

Aベストアンサー

曜日の算出はツェラーの公式で算出すれば、あとは#1さんのご回答をコーディングするのみで1582年10月15日(金)以降対応となります

ツェラーの公式
http://easycgi.xrea.jp/tips/perl/zeller.htm

んでコーディングしてみました。
### ex. 1583年から2100年までで、10月10日が月曜日となる年は?
$mon = 10;
$day = 10;
$j = 0;##カウンター
for( $i=1583; $i<=2100; $i++){
if( $mon<3){$year = $i-1; $month=$mon+12;}else{$year=$i;$month=$mon;}
$week = ($year + int($year/4) - int($year/100) + int($year/400) + int((13*$month + 8)/5) + $day) %7;
if ( $week == 1 ){
$j ++;
print "$i,";
}
}
print "<br>$j回ありました.";
### result 75回、ちゃんと今年も入っていたから計算間違いはないはず。
前後を適宜補って実行してみてください

曜日の算出はツェラーの公式で算出すれば、あとは#1さんのご回答をコーディングするのみで1582年10月15日(金)以降対応となります

ツェラーの公式
http://easycgi.xrea.jp/tips/perl/zeller.htm

んでコーディングしてみました。
### ex. 1583年から2100年までで、10月10日が月曜日となる年は?
$mon = 10;
$day = 10;
$j = 0;##カウンター
for( $i=1583; $i<=2100; $i++){
if( $mon<3){$year = $i-1; $month=$mon+12;}else{$year=$i;$month=$mon;}
$week = ($year + int($year/4) - int($year/1...続きを読む


おすすめ情報