在Cocos2d-x里如何获得系统当前时间?

我想用Cocos2d-x开发一款跨平台的应用程序,一个随时可以倒计时的钟表。如果让我直接写的话,我会用C++的time(...),mktime(...)和difftime(...)。但考虑跨平台的需求,这种方法显然不合适。那在Cocos2d-x里没有较好的解决方案(如直接内置到框架中的方法)。而且,我需要应用可以在iPhone、iPad和Android三个终端都能正常工作。

原问题:Is there a preferred way to get the system time in cocos2d-x?

阅读 9.4k
1 个回答

答案
einverne:这个函数可以获取系统当前的时间,以毫秒为单位。我是一个Cocos2d-x新手,希望对你有所帮助。

static inline long millisecondNow()
{
    struct cc_timeval now;
    CCTime::gettimeofdayCocos2d(&now, NULL);
    return (now.tv_sec * 1000 + now.tv_usec / 1000);
}

NonlinearIdeas(提问者):这个似乎接近我的需求,但这只是我需要的一部分,一般情况下,我需要一个真正的“日期和时间”对象(或结构),不只是以毫秒为单位。我自己尝试了下,就目前而言,最佳的解决方案似乎是用C++中的经典“三剑客” localtime,mktime和difftime。展示几个基本操作的实例,我可以虚构一个通用类去做不同的类型的操作,我认为这是一个很不错的开头.

double Utilities::SecondsTill(int hour, int minute)
{
   time_t now;
   struct tm target;
   double seconds;

   time(&now);  

   target = *localtime(&now);

   target.tm_hour = hour;
   target.tm_min = minute;
   target.tm_sec = 0;

   seconds = difftime(mktime(&target),now);

   return seconds;
}

DAYS_OF_WEEK_T Utilities::GetDayOfWeek()
{
   struct tm tinfo;
   time_t rawtime;
   time (&rawtime);

   tinfo = *localtime(&rawtime);

   return (DAYS_OF_WEEK_T)tinfo.tm_wday;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题