nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

cocos2d-x で時間を扱う

はじめに

  • cocos2d-x で時間処理をしたかったので、 time.h を使う。
  • 勘で "CCDate" でググったら、ライブラリ作っている人はいて、中で time.h 使っていたので、とりあえずこれでやってみる。
// 時間計算ライブラリの読み込み
#include <time.h>

// UNIX時間型
time_t time;

// UNIX時間で現在時
time_t now = time(NULL);

// UNIX時間型同士の差の秒数を取得
time_t t1 = time(NULL);
time_t t2 = time(NULL);
double diff = difftime(t1, t2);

// UNIX時間型から、時間を表す構造体 struct tm の作成
time_t t = time(NULL);
struct tm* date = localtime(t);

/** struct tm の構造
    struct tm {
        int tm_sec;        // 秒
        int tm_min;        // 分
        int tm_hour;       // 時
        int tm_mday;       // 日
        int tm_mon;        // 月( 1月=0 )
        int tm_year;       // 西暦年 - 1900
        int tm_wday;       // 曜日( 日=0 )
        int tm_yday;       // 日(年を通して)
        int tm_isdst;      // サマータイムフラグ
    };
*/

// struct tm から time_t の作成
struct tm date; /* 2014/01/01 12:30:00 を設定 */
memset((void *)&date, '\0', sizeof(date)); /* 初期化 */
date.tm_year = 114; /* 年[1900年から起算] */
date.tm_mon  = 0;   /* 月[0-11] */
date.tm_mday = 1;   /* 日[1-31] */
date.tm_hour = 12;  /* 時[0-23] */
date.tm_min  = 30;  /* 分[0-59] */
date.tm_sec  = 0;   /* 秒[0-61]閏秒考慮 */
time_t t = mktime(&date);