Cocos2dx中获取时间

项目中需要获取毫秒级时间,本想偷个懒,直接在网上搜了个代码如下:


long getCurrentTime()    
{     
    struct timeval tv;     
    
    gettimeofday(&tv,NULL);     
 return tv.tv_sec * 1000 + tv.tv_usec / 1000; 
} 

在手机上运行总是得到负的值,经过查错和进行小小的修改 (long类型和long long类型):


long long GetCurrentTime()    
{ 
    struct cc_timeval tv;     
    CCTime::gettimeofdayCocos2d(&tv, NULL);  

    long long millSecond = ((long long)tv.tv_sec) * 1000L + tv.tv_usec / 1000L;
    return millSecond;     
}
 

能够得到正确的值,究其原因 获取毫秒级时间 long类型的位数不够,需要更大的数需要用long long类型。
C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long 是64 位宽,在32位机器上可以扩展8字节的数据,GUN C也支持。


顺便附上取年月日时间字串的函数:(注意:Cocos2dx中的年是从1900年开始的
(特别提示以下代码win32下的内容只是写了,没实际验证过哦,需要引用的同学需要自己验证)


string GetCurrentDateTime()  
{  
#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 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);   
#elif ( CC_TARGET_PLATFORM == CC_PLATFORM_WIN32 )  
    struct tm *tm;    
    time_t timep;    
    time(&timep);    
    tm = localtime(&timep);    
    
    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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木头呆但不傻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值