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;
}
我想在函数中 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;
}