1

我想在函数中以字符串格式从时间戳返回 time_t 值,但我不明白。我需要帮助。

我读取了一个 Redis 数据库的字符串 KEY,它是一个时间戳值,格式为,例如“1456242904.226683”

我的代码是:

time_t get_ts(redisContext *ctx)
{
    redisReply *reply;
    reply = redisCommand(ctx, "GET %s", "KEY");
    if(reply == NULL){
        return -1;
    }

    char error[255];
    sprintf(error, "%s", "get_ts 2:",reply->str);
    send_log(error);

    freeReplyObject(reply);

    return reply->str;
}

reply->str 是一个字符串值,但我需要返回一个 time_t 值。

我该怎么做?

谢谢

4

1 回答 1

1

我假设 1456242904.226683 是自 1970 年 1 月 1 日 00:00 以来的秒数。这大约是 46 年。1456242904.226683 是浮点值,time_t是整数数据类型。不能将 1456242904.226683 转换为time_t精确,但可以转换 1456242904。首先atof用于将字符串转换为浮点值,然后将浮点值转换为time_t

#include <stdlib.h>     // atof

time_t get_ts(redisContext *ctx)
{
    redisReply *reply;
    reply = redisCommand(ctx, "GET %s", "KEY");
    if(reply == NULL){
        return -1;
    }

    char error[255];
    sprintf(error, "%s", "get_ts 2:",reply->str);
    send_log(error);

    time_t t = (time_t)atof(reply->str);
             // ^^^^^^ ^^^^

    freeReplyObject(reply);

    return t;
}
于 2016-02-23T17:14:01.697 回答