C:字符串到毫秒时间戳

C: string to milisecs timestamp

我想在函数中 return 从字符串格式的时间戳中获取 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 是一个字符串值,但我需要 return 一个 time_t 值。

我该怎么做?

谢谢

我假设 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;
}