将long int转换为const time_t

时间:2016-04-12 14:28:37

标签: c++ ctime

我有变量tmit:long tmit;。我在这段代码中遇到错误:

printf("Time: %s",ctime(&tmit));

错误说:Cannot convert 'long int*' to 'const time_t* {aka const long long int*}' for argument '1' to 'char* ctime(const time_t*)' 我的问题是,如果我想看日期,如何将long转换为time_t而不会丢失任何有关时间的信息或如何更改此代码。我正在研究这个answer,但是我收到了错误。

2 个答案:

答案 0 :(得分:5)

一般情况下,您不能在getProgress() Old - null getProgress() New- 0 getProgress() Old - 0 getProgress() New- 24 getProgress() Old - 24 getProgress() New- 50 getProgress() Old - 50 getProgress() New- 82 getProgress() Old - 82 getProgress() New- 100 onComplete() std::time_t之类的整数之间建立任何合理的连接。

在您的特定系统上,longstd::time_t,因此您可以这样做

long long

然后使用std::time_t temp = tmit; 的地址。请注意,这不需要在编译器或编译器版本之间移植(尽管我不希望后者破坏)。

值得检查temp中保存的内容是否以合理的方式被tmit等函数解释,因为您没有告诉我们它来自何处。

根据此ctime的生成方式,最好在开始时使用tmit代替std::time_t tmit,从而完全消除此转换问题。< / p>

如果您不必使用旧的C风格时间设施,请查看C ++ 11 {{3}}标题。

答案 1 :(得分:3)

你不能简单地&#34;转换&#34;一种指向不兼容对象类型指针的指针。

你想要做的是创建另一种类型的对象,然后使用对象类型之间的impicit转换初始化它,最后将指针传递给新创建的对象:

public HttpResponseMessage Post([FromBody] JToken model)
{
    DoStuff(model);

    var myField = model["fieldName"];

    return new HttpResponseMessage(HttpStatusCode.OK);
}