将time_t转换为int

时间:2014-01-06 02:07:38

标签: c++ timestamp unix-timestamp static-cast

我想将time()返回的unix时间戳作为time_t转换为整数。我一直在寻找解决方案20分钟,并决定在这里问。

我找到的每个解决方案都没有奏效。当尝试从time_t转换为int时,我得到错误:

long int t = static_cast<long int> time(NULL);
  

错误C2061:语法错误:标识符'time'

     

错误C2146:语法错误:缺少'('标识符'时间'之前'

我对C ++非常陌生。提前谢谢。

3 个答案:

答案 0 :(得分:3)

time_t已经是一个整数,虽然它被故意选择存储系统的全部UNIX时间,所以我建议反对这个演员。

但是,如果你坚持,你就是正确的行,但是只是让演员语法错误

通常,将e静态转换为T如下所示:

static_cast<T>(e)  // <-- parentheses!

正如错误消息告诉您的那样,您“失踪”('在标识符'时间之前''。

所以,你的表达将是:

long int t = static_cast<long int>(time(NULL));

答案 1 :(得分:2)

只需阅读错误并插入'缺失(标识符时间'

long int t = static_cast<long int>(time(NULL));

static_cast需要the value to be encapsulated in parentheses

答案 2 :(得分:0)

只需在时间周围添加括号(NULL):

long int t = static_cast<long int>(time(NULL));