「C言語/サンプル/日時」の編集履歴(バックアップ)一覧はこちら

C言語/サンプル/日時」(2012/09/23 (日) 10:09:42) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

時刻であれこれサンプル *** ソース &ref(timeSample.c) #highlight(){{ #include <stdio.h> #include <time.h> #include <locale.h> int main(void) { // 現在時刻を取得して文字列に変換 time_t timer; // time_tの正体はただの整数1970/1/1からの経過秒数が設定される struct tm *date; // 時刻を人間に分かる形で表す構造体 // 現在時刻を取得 timer = time(NULL ); // 現在時刻を構造体に変換 date = localtime(&timer); // mktime 構造体からtime_tに変換もできます timer = mktime(date); // strftime関数 // 1. yyyy/MM/dd HH:mm:ss形式 char str[30], str2[30]; strftime(str, 24, "%Y/%m/%d %H:%M:%S", date); printf("1 %s\n", str); // 2. yyyy/MM/dd 曜日 HH:mm:ss形式 // setlocale(LC_ALL, "JPN");が効いているので「火」って出る strftime(str, 24, "%Y/%m/%d %a %H:%M:%S", date); printf("2 %s\n", str); // 曜日の漢字を手動で入れてみよう char *pYoubi[] = { "(日)", "(月)", "(火)", "(水)", "(木)", "(金)", "(土)" }; char *pYoubi2[] = { "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日" }; // 3. yyyy/MM/dd (曜日) HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // sprintfで%sに曜日を仕込む sprintf(str2, str, pYoubi[date->tm_wday]); // ワイド文字の出力はprintf printf("3 %s\n", str2); // printfでもやってみよう // 4. yyyy/MM/dd HH:mm:ss形式 printf("4 %d/%02d/%02d %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec); // 5. yyyy/MM/dd (曜日) HH:mm:ss形式 printf("5 %d/%02d/%02d %s %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, pYoubi[date->tm_wday], date->tm_hour, date->tm_min, date->tm_sec); // 6. yyyy/MM/dd n曜日 HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // sprintfで%sに曜日を仕込む sprintf(str2, str, pYoubi2[date->tm_wday]); // ワイド文字の出力はprintf printf("6 %s\n", str2); return 0; } }} *** 実行結果 #highlight(c){{ 1 2012/08/08 17:26:06 2 2012/08/08 Wed 17:26:06 3 2012/08/08 (水) 17:26:06 4 2012/08/08 17:26:06 5 2012/08/08 (水) 17:26:06 6 2012/08/08 水曜日 17:26:06 }} *** ideone http://ideone.com/RJhlZ *** ワイド文字バージョン ソース &ref(timeWSample.c) #highlight(c){{ #include <stdio.h> #include <time.h> #include <wchar.h> #include <locale.h> #include <stdlib.h> int main(void) { // 日本語を扱う場合はロケールを設定しないとおかしくなる setlocale(LC_ALL, "JPN"); // 現在時刻を取得して文字列に変換 time_t timer; // time_tの正体はただの整数1970/1/1からの経過秒数が設定される struct tm *date; // 時刻を人間に分かる形で表す構造体 // 現在時刻を取得 timer = time(NULL ); // 現在時刻を構造体に変換 date = localtime(&timer); // mktime 構造体からtime_tに変換もできます timer = mktime(date); // strftime関数 // 1. yyyy/MM/dd HH:mm:ss形式 char str[30]; strftime(str, 24, "%Y/%m/%d %H:%M:%S", date); printf("1 %s\n", str); // 2. yyyy/MM/dd 曜日 HH:mm:ss形式 // setlocale(LC_ALL, "JPN");が効いているので「火」って出る strftime(str, 24, "%Y/%m/%d %a %H:%M:%S", date); printf("2 %s\n", str); // 曜日の漢字を手動で入れてみよう wchar_t *pYoubi[] = { L"(日)", L"(月)", L"(火)", L"(水)", L"(木)", L"(金)", L"(土)" }; wchar_t *pYoubi2[] = { L"日曜日", L"月曜日", L"火曜日", L"水曜日", L"木曜日", L"金曜日", L"土曜日" }; wchar_t wstr[30], wstr2[30]; // 3. yyyy/MM/dd (曜日) HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // マルチバイトからワイド文字へ変換 mbstowcs(wstr, str, 24); // swprintfで%sに曜日を仕込む swprintf(wstr2, wstr, pYoubi[date->tm_wday]); // ワイド文字の出力はwprintf wprintf(L"3 %s\n", wstr2); // ワイド文字からマルチバイトに変換して出力してみる wcstombs(str, wstr2, 26); printf("3 %s\n", str); // printfでもやってみよう // 4. yyyy/MM/dd HH:mm:ss形式 printf("4 %d/%02d/%02d %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec); // 5. yyyy/MM/dd (曜日) HH:mm:ss形式 wprintf(L"5 %d/%02d/%02d %s %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, pYoubi[date->tm_wday], date->tm_hour, date->tm_min, date->tm_sec); // 6. yyyy/MM/dd n曜日 HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // マルチバイトからワイド文字へ変換 mbstowcs(wstr, str, 24); // swprintfで%sに曜日を仕込む swprintf(wstr2, wstr, pYoubi2[date->tm_wday]); // ワイド文字の出力はwprintf wprintf(L"6 %s\n", wstr2); return 0; } }} *** 実行結果 #highlight(){{ 1 2012/08/07 14:44:31 2 2012/08/07 火 14:44:31 3 2012/08/07 (火) 14:44:31 3 2012/08/07 (火) 14:44:31 4 2012/08/07 14:44:31 5 2012/08/07 (火) 14:44:31 6 2012/08/07 火曜日 14:44:31 }} *** codepad http://codepad.org/WBAc9WoY
時刻であれこれサンプル *** ソース(CP932) &ref(timeSample.c) #highlight(){{ #include <stdio.h> #include <time.h> #include <locale.h> int main(void) { // 現在時刻を取得して文字列に変換 time_t timer; // time_tの正体はただの整数1970/1/1からの経過秒数が設定される struct tm *date; // 時刻を人間に分かる形で表す構造体 // 現在時刻を取得 timer = time(NULL ); // 現在時刻を構造体に変換 date = localtime(&timer); // mktime 構造体からtime_tに変換もできます timer = mktime(date); // strftime関数 // 1. yyyy/MM/dd HH:mm:ss形式 char str[30], str2[30]; strftime(str, 24, "%Y/%m/%d %H:%M:%S", date); printf("1 %s\n", str); // 2. yyyy/MM/dd 曜日 HH:mm:ss形式 // setlocale(LC_ALL, "JPN");が効いているので「火」って出る strftime(str, 24, "%Y/%m/%d %a %H:%M:%S", date); printf("2 %s\n", str); // 曜日の漢字を手動で入れてみよう char *pYoubi[] = { "(日)", "(月)", "(火)", "(水)", "(木)", "(金)", "(土)" }; char *pYoubi2[] = { "日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日" }; // 3. yyyy/MM/dd (曜日) HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // sprintfで%sに曜日を仕込む sprintf(str2, str, pYoubi[date->tm_wday]); // ワイド文字の出力はprintf printf("3 %s\n", str2); // printfでもやってみよう // 4. yyyy/MM/dd HH:mm:ss形式 printf("4 %d/%02d/%02d %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec); // 5. yyyy/MM/dd (曜日) HH:mm:ss形式 printf("5 %d/%02d/%02d %s %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, pYoubi[date->tm_wday], date->tm_hour, date->tm_min, date->tm_sec); // 6. yyyy/MM/dd n曜日 HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // sprintfで%sに曜日を仕込む sprintf(str2, str, pYoubi2[date->tm_wday]); // ワイド文字の出力はprintf printf("6 %s\n", str2); return 0; } }} *** 実行結果 #highlight(c){{ 1 2012/08/08 17:26:06 2 2012/08/08 Wed 17:26:06 3 2012/08/08 (水) 17:26:06 4 2012/08/08 17:26:06 5 2012/08/08 (水) 17:26:06 6 2012/08/08 水曜日 17:26:06 }} *** ideone http://ideone.com/RJhlZ *** ワイド文字バージョン ソース(UTF-8) &ref(timeWSample.c) #highlight(c){{ #include <stdio.h> #include <time.h> #include <wchar.h> #include <locale.h> #include <stdlib.h> int main(void) { // 日本語を扱う場合はロケールを設定しないとおかしくなる setlocale(LC_ALL, "JPN"); // 現在時刻を取得して文字列に変換 time_t timer; // time_tの正体はただの整数1970/1/1からの経過秒数が設定される struct tm *date; // 時刻を人間に分かる形で表す構造体 // 現在時刻を取得 timer = time(NULL ); // 現在時刻を構造体に変換 date = localtime(&timer); // mktime 構造体からtime_tに変換もできます timer = mktime(date); // strftime関数 // 1. yyyy/MM/dd HH:mm:ss形式 char str[30]; strftime(str, 24, "%Y/%m/%d %H:%M:%S", date); printf("1 %s\n", str); // 2. yyyy/MM/dd 曜日 HH:mm:ss形式 // setlocale(LC_ALL, "JPN");が効いているので「火」って出る strftime(str, 24, "%Y/%m/%d %a %H:%M:%S", date); printf("2 %s\n", str); // 曜日の漢字を手動で入れてみよう wchar_t *pYoubi[] = { L"(日)", L"(月)", L"(火)", L"(水)", L"(木)", L"(金)", L"(土)" }; wchar_t *pYoubi2[] = { L"日曜日", L"月曜日", L"火曜日", L"水曜日", L"木曜日", L"金曜日", L"土曜日" }; wchar_t wstr[30], wstr2[30]; // 3. yyyy/MM/dd (曜日) HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // マルチバイトからワイド文字へ変換 mbstowcs(wstr, str, 24); // swprintfで%sに曜日を仕込む swprintf(wstr2, wstr, pYoubi[date->tm_wday]); // ワイド文字の出力はwprintf wprintf(L"3 %s\n", wstr2); // ワイド文字からマルチバイトに変換して出力してみる wcstombs(str, wstr2, 26); printf("3 %s\n", str); // printfでもやってみよう // 4. yyyy/MM/dd HH:mm:ss形式 printf("4 %d/%02d/%02d %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, date->tm_hour, date->tm_min, date->tm_sec); // 5. yyyy/MM/dd (曜日) HH:mm:ss形式 wprintf(L"5 %d/%02d/%02d %s %02d:%02d:%02d\n", date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, pYoubi[date->tm_wday], date->tm_hour, date->tm_min, date->tm_sec); // 6. yyyy/MM/dd n曜日 HH:mm:ss形式 // 曜日の入るところに%sを仕込む strftime(str, 24, "%Y/%m/%d %%s %H:%M:%S", date); // マルチバイトからワイド文字へ変換 mbstowcs(wstr, str, 24); // swprintfで%sに曜日を仕込む swprintf(wstr2, wstr, pYoubi2[date->tm_wday]); // ワイド文字の出力はwprintf wprintf(L"6 %s\n", wstr2); return 0; } }} *** 実行結果 #highlight(){{ 1 2012/08/07 14:44:31 2 2012/08/07 火 14:44:31 3 2012/08/07 (火) 14:44:31 3 2012/08/07 (火) 14:44:31 4 2012/08/07 14:44:31 5 2012/08/07 (火) 14:44:31 6 2012/08/07 火曜日 14:44:31 }} *** codepad http://codepad.org/WBAc9WoY

表示オプション

横に並べて表示:
変化行の前後のみ表示: