分享

Cocos2dx获取系统时间(3.3版本)

 清辉花园 2017-12-17
一、获取时间
struct tm *tm;
time_t timep;
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
  time(&timep);
#else
  struct timeval tv;
  gettimeofday(&tv, NULL);
  timep = tv.tv_sec;
#endif
tm = localtime(&timep);
int year = tm->tm_year + 1900;//年
int month = tm->tm_mon + 1;//月
int day = tm->tm_mday;//日

二、获取两个日期相差多少天
1、获取当前日期的天数
GetAbsDays(MyDate x)
 {
   int i;
   int month_day[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
   int year = x.year - 1;
   int days = year * 365 + year / 4 - year / 100 + year / 400;
   if (x.year % 4 == 0 && x.year % 100 != 0 || x.year % 400 == 0)
    month_day[1]++;
   for (i = 0; i < x.month - 1; i++)
     days += month_day[i];
   days += x.day - 1;
   return days;
}

2、GetAbsDays(MyDate1 )- SignDialog::GetAbsDays(MyDate2);

三、通过时间戳计算时间差
1、获取当前时间(秒)
time_t t = time(0);
2、保存时间
Data data;
data.copy((unsigned char *) &t, sizeof(t));
UserDefault::getInstance()->setDataForKey("time_1", data);
3、取时间
auto d = UserDefault::getInstance()->getDataForKey("time_1",Data());
time_t lastExitTime = *((time_t*)d.getBytes());
time_t currentTime= time(0);
time_t time=currentTime-lastExitTime;
4、换算为分钟
int k=time/60;
(参考他人 
u012408019)
上述是版本为3.3

另一种写法

std::string Tools::get_date_now()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    struct cc_timeval now;
    CCTime::gettimeofdayCocos2d(&now, NULL);
    struct tm *tm;
    time_t tp = now.tv_sec;
    tm = localtime(&tp);
    char date[32] = { 0 };
    sprintf(date, "%d-%02d-%02d", (int) tm->tm_year + 1900,
        (int) tm->tm_mon + 1, (int) tm->tm_mday);
    return string(date);
#endif
#if ( CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 )
    struct tm *tm; 
    time_t timep; 
    time(&timep); 
    tm = localtime(&timep); 
    //int year = tm->tm_year + 1900; 
    //int month = tm->tm_mon + 1; 
    //int day = tm->tm_mday; 
    //int hour=tm->tm_hour; 
    //int minute=tm->tm_min; 
    //int second=tm->tm_sec;
    char time[64] = { 0 };
    sprintf(time, "%d-%02d-%02d %02d:%02d:%02d", (int) tm->tm_year + 1900,
        (int) tm->tm_mon + 1, (int) tm->tm_mday, (int) tm->tm_hour,
        (int) tm->tm_min, (int) tm->tm_sec);
    return string(time);
#endif
}



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多