• ベストアンサー

今日の曜日の取得方法について

タイトルの通りなんですが、今日の曜日の取得方法についてアドバイスをお願いします。 自分でネットを調べてみて、下記の通りに記述してみました。 $times = time(); ($tsec,$tmin,$thour,$tmday,$tmonth,$tyear,$weekday,$tstime) = localtime($times); @weekly = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut'); 次に表示した場所に print "$weekly[$weekday]\n"; と記述したら、一応今日の曜日(Thr)が表示されました。 私はPerlは全くの初心者で、何とか自力でここまで辿り着く事ができたのですが、このような記述の方法で間違いはないでしょうか? うるう年の計算も、付け加えないといけませんか? 初歩的な質問かもしれませんが、アドバイスを頂けると助かります。 それでは、よろしくお願いします。

  • s5429
  • お礼率60% (110/182)
  • Perl
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

localtime という関数は、うるう年なども考慮した日時情報を返すので、その辺は気にせず利用することができます。また、曜日の取得や表示についても問題ありません。 ただ、No.2の補足にも書かれていますが、曜日しか必要ないのに他の情報まで取得するのは気持ち悪いですよね?localtime() の戻値は「リスト」なので、「添え字」を使って曜日だけを取り出すことができます。   $weekday = (localtime($times))[6];   ※「localtime($times)」全体を ( ) で囲む必要があります。 また localtime() は、引数がなければ勝手に time() の値を使うので、それも省略して次のように書くことができます。   $weekday = (localtime)[6];   ※time や localtime などの組み込み関数は、( ) がなくても関数として呼び出せます。 蛇足ですがついでに書くと、曜日名だけが必要で、@weekly や $weekday を他で使わないなら、次のようにも書けます。   $wday_name = qw(Sun Mon Tue Wed Thr Fri Sat)[ (localtime)[6] ];   ※「qw(Sun Mon …)」は「('Sun','Mon',…)」と等価です。 # 書いてて気が付きましたが、土曜日の略は 'Sut' ではなく 'Sat' ですね。

s5429
質問者

お礼

お返事が遅れてしまい、申し訳ありません。 御回答ありがとうございます。 特にうるう年について特別修正する事はないんですね。 もっと簡単に記述する方法も教えて頂き、ありがとうございます。 教えて頂いた方法を試してみて、上手くできたらその方法で曜日を表示させようと思います。 ># 書いてて気が付きましたが、土曜日の略は 'Sut' ではなく 'Sat' ですね。 おはずかしい(^^; 仰る通りです。 とても基本的なところで間違えてしまいました。。。 丁寧に教えて頂きありがとうございました。 また何か御質問させて頂く事がありかもしれませんが、よろしくお願い致します。

その他の回答 (2)

  • estea
  • ベストアンサー率44% (39/87)
回答No.2

あってると思うよ。 うるう年は自分で計算しなくていいです。 過去や未来の曜日が知りたければ自分で計算する場合もありますが。その場言いはツェラーの公式だったかな?が便利かと。

s5429
質問者

お礼

御回答ありがとうございます。 とりあえずはこの記述方法で合っているのですね。 あと気になったのですが、年に1900をプラスしたり、月に1をプラスする必要はないのでしょうか? 曜日のみ表示させたいだけなので、年や月は直接関係ないような気もしますが、特に修正する必要はありますか? アドバイスを頂けると助かります。 よろしくお願いします。

  • kosa
  • ベストアンサー率25% (379/1464)
回答No.1

日付取得のルーチンは使いまわしできるので意外と重要ですよね。 ここのサイトを参考にしてみては? わかりやすくていいですよ http://www2u.biglobe.ne.jp/~MAS/perl/waza/menu.html

参考URL:
http://www2u.biglobe.ne.jp/~MAS/perl/waza/menu.html
s5429
質問者

お礼

御回答ありがとうございます。 参考先のサイトは検索で1度みてみましたが、どのように使用するのかちょっと分からなかったので、ここで記述されている方法は使用しませんでした。 ですが、その他にもいろいろと説明があるようなので、今後参考にしてみようと思います。

関連するQ&A

  • perl qw(aaa bbb ccc)[$hoge]のような記述

    my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $wday = sprintf("%s", qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]); 2行目のsprintfですが、qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]はどのようなことが行われているのでしょうか? sprintf("%s", "hello world!");みたいな基本的なものならsprintfの使い方はわかります。ですが、qw(aaa bbb ccc)[$hoge]のような記述についてがわかりません。 上記の例でいえば、どういう結果になるのかはわかるのですが、どういう過程で代入されているのかがわかりません。 qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]という書式はどういうことが行われているのか教えてください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • plorogプログラミング

    たとえば /*ミラノ:ロンドン*/ timetable(mil,lon,[0735,0845,az226,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[0755,0900,ba571,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[0815,0925,ba561,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[1020,1125,az228,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[1130,1230,ba565,[sun,mon,tue,wed,thu,fri,sat]]). というフライトデータがあるとして、ここからフライト時間を割り出すにはどうしたらいいんでしょうか? 述語が分かる方お願いします。

  • PHPで明日の日付と明日の曜日を取得したい

    <td align="center"><?php date_default_timezone_set('Asia/Tokyo'); $week2 = array( 'Mon'=>'月', 'Tue'=>'火', 'Wed'=>'水', 'Thu'=>'木', 'Fri'=>'金', 'Sat'=>'土', 'Sun'=>'日' ); $w = $week2[date('D')]; echo date("j日") . "($w)"; ?></td> 上記のコードで今日の日付と曜日が取得出来るのですが、明日の日付と明日の曜日を取得するのはどうすれば良いのでしょうか。

  • Suzukaで時計のflashを作成し、曜日も表示されるようにしました

    Suzukaで時計のflashを作成し、曜日も表示されるようにしましたが、日曜日から土曜日まで全て同じ色(黒)で表示されます。 //曜日を取得 WD = fscommand2("GetDateWeekday"); //曜日の表示文字 if(WD == 0) {WD = "SUN";} else if (WD == 1) {WD = "MON";} else if (WD == 2) {WD = "TUE";} else if (WD == 3) {WD = "WED";} else if (WD == 4) {WD = "THU";} else if (WD == 5) {WD = "FRI";} else if (WD == 6) {WD = "SAT";} //(曜日)をyoubiに表示 youbi = WD ; そこで、日曜日(SUN)を赤、土曜日(SAT)を青で表示できないものかと調べたのですが、分かりませんでした。 「SUN」と「SAT」の文字の色を変えるやり方がもしありましたら、教えて頂けませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 時計のDOMやらLUNって何でしょう?英語?

    オークションで 中古の外国製の腕時計を購入したのですが、 曜日の事でわからないことが あります。 それは、日、月、火と続くのではなくて SUN → DOM MON → LUN TUE → MAR WED → MIER THU → JUEV FRI → VIER SAT → SAB と、変わっていくんです。 なんとなくはわかるのですが これが何を意味しているのか 教えてください。

  • 配列の連結

    Array.concat についての質問です arrA = new Array("Sun", "Mon", "Tue", "Wed"); arrB = new Array("Thu", "Fri", "Sat"); arrC = new Array(); arrC = arrA.concat(arrB); arrA = arrC; と書くことはできますが、 arrA = arrA.concat(arrB); と書くことはできないのでしょうか? やりたいことは、arrA に連結した結果を保持しておきたいのです

  • C語でenumの使い方

    http://www9.plala.or.jp/sgwr-t/c/sec16.html の下部に enum week { SUN, MON, TUE, WED, THU, FRI, SAT }; int main(void) { enum week w;   /* ⇒列挙型 week で変数 w を宣言 */ w = MON; /* ⇒変数 w に列挙定数 MON を代入 */ と書かれています。 列挙型 week で変数 w を宣言するのはどういうときに メリットがありますか? 普通にunsigned char w と何が違うのでしょうか?

  • 時計の曜日表示について

    先日、アナログでSEIKOの腕時計をプレゼントしていただいたのですが、この時計の曜日表示をまわしてみてみると、 MON.LUN.TUE.MAR.WED.MIE.THU.JUE.FRI.VIE.SAT.SAB.SUN.DOM というような感じで並んでいるんです。2つペアで月曜から日曜まで並んでいるのはわかりますが、はじめのほうは英語でいいのですが、後のほうの読み方が分かりません。いちおう調べてみたのですが、上手く当てはまる言語がないのです。 どなたか分かる方がいたら、教えて下さい。

  • Excel - ちょっとややこしい値の引き方

    宜しくお願いします。 文字で説明するのが難しいのですが、例えば。 Sheet1が【集計表】、Sheet2が【データ】(数字で入力)というブックがあるとしまして、【データ】から【集計表】に、曜日ごとの合計値を引きたいとします。 --------------------------------------------  Sun Mon Tue Wed Thu Fri Sat A B C -------------------------------------------- こんな表になります。 そしてA,B,Cは任意に入力できるようにして、例えばAであれば、【データ】シート上の[A1:C10]というように、引いてくる元の範囲を可変にするとします。ABCに対する範囲は固定で、ABCの横に並んだ状態であらかじめ用意されているとします。 -------------------------------------------- A A1:C10 B D1:F10 C G1:I10  Sun Mon Tue Wed Thu Fri Sat □ □ □ ↑任意のアルファベットを入れます -------------------------------------------- こういう状態です。 ここで、例えばCの項目の、日曜日の合計を出そうと思ったら、範囲はINDIRECTか何かで引くとして、SUMIF?SUMPRODUCT?どのようにすれば良いでしょうか。色々試してみたのですが、何故かどれも0になってしまいまして。 (SunのセルをE2とします)

  • 万年カレンダー

    万年カレンダー作ろうとしているのですが、ここからの作り方がわかりませんので、教えてください。 int youbi_chk(int,int,int); int uru_chk(int); void main(void) { int yy,mm; char week[7][4]={\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"}; int mday[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf(\"年(西暦:4桁)を入力して下さい:\"); scanf(\"%d\",&yy); printf(\"月を入力して下さい:\"); scanf(\"%d\",&mm);