C言語ケーススタディ カレンダー時刻




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を強力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



 C言語の標準関数で時間を取り扱う場合、カレンダー時刻を使用します。 カレンダー時刻は、グリニッジ標準時間で1970年1月1日 0時0分0秒からの経過時間を秒で 表現します(日本時間とグリニッジ標準時間との時差は-9時間あります)。 例えばカレンダー時間が100ならば、1970年1月1日 0時1分40秒になります。 カレンダー時刻はlongの変数に格納されます(time_tという名前でtypedefされています)。 また、現在のカレンダー時刻はtime()という関数で取得します。
#include <stdio.h>
#include <time.h>

main()
{
        time_t  now;

        now = time(NULL);
        printf("現在の1970年1月1日 0時0分0秒から %d 秒経過しています\n", now);
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
time_tは、time.h内でtypedef long time_t;と定義されています。typedefが解らない 場合は#define time_t longと定義されていると考えて下さい。long now;と宣言しても 同じ動作をするのですが、別のケーススタディで解説する2038年問題にも関係するので time_tで宣言しておくのが良いでしょう。 time()関数のパラメータは、NULL以外も指定できますが、あまり利用価値がないので 常にNULLを指定すると考えてください(NULLはstdio.h内で#define NULL 0Lなどと定義 されています)。時刻を扱うプログラムでは、time_tとNULLを使うのことがほとんどなので stdio.hとtime.hをインクルードする必要があります。
 現在のカレンダー時刻の取得は、上記のように非常に簡単にできますが、カレンダー 時間がわっても今日が何日なのかはよくわかりません(閏年なども考えると変換するの もかなり大変です)。カレンダー時刻を日付文字列に変換する方法はいくつかありますが、 今回はctime()関数を使用します。ctime()関数はカレンダー時刻をパラメータにあたえる と"Mon Feb 10 11:31:54 1999"といった文字列を作成します(日本時間に調整されます)。
#include <stdio.h>
#include <time.h>

main()
{
        time_t  now;

        now = time(NULL);
        printf("<<<%s>>>\n", ctime(&now));
}
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する ブラウザとの連携機能が使用可能なStudy Cのバージョンなどについて...
ctime関数は改行つきで文字列を作成します。改行が必要ない場合は最初の24文字を コピーしてから使用すれば良いでしょう。
 ctime関数は簡単に日付文字列を生成してくれますが、決まった形式でしか表示され ません。もっと高度な使い方は次回以降説明していきます。


[an error occurred while processing this directive]