←3DSのHBL用アプリ開発 トップへ

日付と時刻を取得する

3DSに設定された日付と時刻を取得します。

最終更新:2017/06/14




はじめに


上画面などにステータスバー的なものを表示させたいときに、電池残量や、Wi-Fiの状態を表示するだけでは物足りないので、日付と時刻を取得します。
「time.h」を使用するので最初にインクルードをしておきましょう。

日時を取得する


変数をtime_t型で初期化してその変数にtime(NULL)で現在の日時を代入します。
そして、日時を扱いやすくするためにgmtime関数でtm構造体に格納します。
//tm構造体
struct tm
{
    int tm_sec; //秒
    int tm_min; //分
    int tm_hour; //時
    int tm_mday; //日
    int tm_mon; //月
    int tm_year; //年(1900年からの経過年)
    int tm_wday; //曜日(0=日 1=月 … 5=金 6=土)
    int tm_yday; //年の合計日数(0から始まる)
    int tm_isdst; //サマータイム(0=なし/1=あり)
};

サンプル


STARTボタンで終了。

#include <3ds.h>
#include <stdio.h>
#include <time.h>
int main(int argc, char **argv) {
    gfxInitDefault();
    consoleInit(GFX_TOP, NULL);
    const char WeekNames[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};//曜日テーブル
    while (aptMainLoop()) {
        time_t t = time(NULL);
        struct tm* tms = gmtime((const time_t *)&t);
        printf("\x1b[0;0H%2d/%02d/%02d %s", tms->tm_year+1900, tms->tm_mon, tms->tm_mday, WeekNames[tms->tm_wday]);//日付を表示
        printf("\x1b[1;0H%2d:%02d:%02d", tms->tm_hour, tms->tm_min, tms->tm_sec);//時刻を表示
    
        hidScanInput();if (hidKeysDown() & KEY_START) break;//終了
        gfxFlushBuffers();
        gfxSwapBuffers();
        gspWaitForVBlank();
    };
    acExit();
    ptmuExit();
    gfxExit();
    return 0;
};




[前へ] [次へ]

(C)2017 InoueSoftware / 無断転載禁止